vma*_*sin 7 npm reactjs webpack babeljs react-hooks
首先链接到 repo:https : //github.com/vmarchesin/react-konami-code
您应该能够构建它(确保取消注释导出src/index.js
)并链接到您的项目。也可以尝试使用npm i -S react-konami-code@2.0.0-beta.0
并获取钩子的错误。我取下了钩子,2.0.0-beta.1
因为它坏了。
我为我的 npm 模块创建了一个自定义钩子,它在发布或用作模块后不起作用。我怀疑问题在于 webpack 如何捆绑它,但我无法解决它。
react
和react-dom
作为外部对象。externals: [
{
react: {
root: 'React',
commonjs2: 'react',
commonjs: 'react',
amd: 'react',
},
'react-dom': {
root: 'ReactDOM',
commonjs2: 'react-dom',
commonjs: 'react-dom',
amd: 'react-dom',
},
},
],
Run Code Online (Sandbox Code Playgroud)
react
并react-dom
为peerDependencies
在package.json
"peerDependencies": {
"react": "^16.13.1",
"react-dom": "^16.13.1"
},
Run Code Online (Sandbox Code Playgroud)
externals: [
{
react: {
root: 'React',
commonjs2: 'react',
commonjs: 'react',
amd: 'react',
},
'react-dom': {
root: 'ReactDOM',
commonjs2: 'react-dom',
commonjs: 'react-dom',
amd: 'react-dom',
},
},
],
Run Code Online (Sandbox Code Playgroud)
我正在使用webpack@4.43.0
以及babel@7
和babel-loader@8.1.0
。
这是我导出 webpack 构建的索引文件的方法:
"peerDependencies": {
"react": "^16.13.1",
"react-dom": "^16.13.1"
},
Run Code Online (Sandbox Code Playgroud)
这是错误的屏幕截图和记录:
未处理的运行时错误错误:无效的挂钩调用。钩子只能在函数组件的主体内部调用。这可能是由于以下原因之一而发生的: 1. 你可能有不匹配的 React 版本和渲染器(例如 React DOM) 2. 你可能违反了 Hooks 规则 3. 你可能有多个 React 副本同一个应用
我在这里看到两个问题,可能会导致您在控制台上看到的错误:
React
因此违反了Hooks 规则-仅从 React Functions 调用 Hooks。所以我会包括React
以下内容:
import React, { useEffect, useState, useCallback } from 'react';
Run Code Online (Sandbox Code Playgroud)
您也可以尝试按如下方式导出:
export default function ComponentName (action, {
code = [38, 38, 40, 40, 37, 39, 37, 39, 66, 65],
} = {}) {
// your component code
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您仍想使用箭头功能,则:
const ComponentName = (action, {
code = [38, 38, 40, 40, 37, 39, 37, 39, 66, 65],
} = {}) => {
// your component code
}
export default ComponentName;
Run Code Online (Sandbox Code Playgroud)
可以参考这篇文章:
不要使用匿名函数构造React函数式组件。
我希望这有帮助!
归档时间: |
|
查看次数: |
1797 次 |
最近记录: |