reactjs - 来自自定义 React Hook 和 React 组件的 NPM 包
问题描述
我对 NPM 库开发相对较新,并且在使用该库时遇到了一些麻烦。
我想做的是导出一个React Hook和一个React Component。当我在我的应用程序中定义和使用 Hook 和 Component 时,它们运行良好,但是导出它们会导致下面提到的问题。
这是我的package.json
...
"scripts": {
"build": "webpack",
},
"devDependencies": {
"@babel/core": "^7.12.3",
"@babel/plugin-proposal-class-properties": "^7.12.1",
"@babel/preset-env": "^7.12.1",
"@babel/preset-react": "^7.12.5",
"@babel/preset-typescript": "^7.12.1",
"@types/node": "^8.0.14",
"@types/react": "^16.9.56",
"@types/react-dom": "^16.9.9",
"babel": "^6.23.0",
"babel-loader": "^8.2.1",
"css-loader": "^5.0.1",
"node-sass": "^5.0.0",
"react": "^17.0.1",
"react-dom": "^17.0.1",
"sass-loader": "^10.0.5",
"style-loader": "^2.0.0",
"ts-loader": "^8.0.11",
"typescript": "^4.0.5",
"webpack": "^5.4.0",
"webpack-cli": "^4.2.0"
},
"peerDependencies": {
"react": "^17.0.1",
"react-dom": "^17.0.1",
}
这是我的入口文件:
// index.ts
export { useCustomHook } from './hooks/customHook'
export { default as CustomComponent } from './components/CustomComponent'
这是我的webpack.config.js
const path = require('path');
module.exports = {
entry: path.join(__dirname, 'index.ts'),
output: {
path: path.join(__dirname, 'dist'),
filename: 'index.js'
},
module: {
rules: [
{
test: /\.tsx?$/,
exclude: /node_modules/,
use: 'babel-loader'
},
{
test: /\.scss$/,
use: ['style-loader', 'css-loader', 'sass-loader']
}
]
},
resolve: {
extensions: ['.ts', '.tsx', '.js', '.json']
}
}
问题/问题
- 当我导入并使用我的时,
useCustomHook
我得到一个TypeError: Object is not a function or its return value is not iterable
. 我怎样才能避免这种情况? - 我可以避免使用吗
react
,react-dom
因为devDependencies
我已经有它们了peerDependencies
解决方案
所以我想通了:最简单的解决方案是放弃webpack
并rollup
改用。然后一切都很简单。
推荐阅读
- android - Android jetpack compose observeAsState() 属性委托必须有一个 'getValue(Nothing?, KProperty<*>)'
- twilio - 是否可以从网络聊天(在网站上)接收消息并使用 Twilio 将此消息转发到 Whatsapp?
- python - 根据给定条件向现有数据框添加多个新列
- amp-html - amp-script Uncaught TypeError:无法读取未定义的属性(读取“点击”)
- php - 使用 Electron 和网站构建游戏,但是如何使用网站上的按钮打开电子应用程序?基于 PHP
- sql - 我可以删除并创建一个创建查询需要使用表本身的表吗?SQL、大数据
- kubernetes - 如何以一个一致的单位表示 CPU 和内存的请求和限制值?
- laravel - Laravel - 我找不到错误的文件
- webpack - sw-precache-webpack-plugin 在 Next Js 的最后一个版本上导致错误
- c# - 如何在 c# 中实现与 proto 相同的列表?