反应无效的钩子调用错误和故事书6

Posted

技术标签:

【中文标题】反应无效的钩子调用错误和故事书6【英文标题】:React invalid hook call error and storybook 6 【发布时间】:2021-02-01 05:06:39 【问题描述】:

我所有的钩子都会导致 Invalid hook call 错误,这是在使用 npx sb init 安装故事书后发生的

import React from 'react'
import  useSectionsQuery  from "../../graphql/generated";
          
export const Home: React.FC = () => 
  const  data  = useSectionsQuery();
            
  return (
    <div className="bg-gray-200">
                  
    
      <div style= backgroundColor: "#4267B2"  className="grid grid-rows-1">
        <div className="flex justify-center">
          data?.sectionMany.map((section: any) => 
            return <Card ...section />;
          )
        </div>
      </div>
    </div>
  )

【问题讨论】:

【参考方案1】:

我的解决方案:

    我已从 package.json 中删除所有 storybook 依赖项; 我已经删除了 yarn.lock 文件和 node_modules 文件夹; 我已将 package.json 上的 react 和 react-dom 版本锁定为 16.13.1; 我在 package.json 中添加了以下分辨率:
  "resolutions": 
    "react": "^16.13.1",
    "react-dom": "^16.13.1"
  
    我已经从我的 workspaces.nohoist 中删除了 react 依赖项 包.json; 我使用 npx sb init 从零开始安装 Storybook。

来自开发者的引述

@eric-burel 我们在 6.1 中对这些东西进行了修改,例如 #11628 并且还删除了也会导致大量依赖敏感性的 webpack DLL

阅读更多here

【讨论】:

【参考方案2】:

对于那些带着 NextJS v10 和 Storybook v6 来到这里的人: Storybook 不支持 react v17,你可以通过运行检查不匹配的版本: npm ls react-domnpm ls react

Storybook 最近发布了一个修复此问题的测试版,您可以通过以下方式安装它: npx sb upgrade --prerelease

更多信息和对话在这里:https://github.com/storybookjs/storybook/issues/12408

【讨论】:

以上是关于反应无效的钩子调用错误和故事书6的主要内容,如果未能解决你的问题,请参考以下文章

反应钩子:无效的钩子调用

块编辑器给出无效的钩子调用错误

反应:无效的钩子调用。 Hooks 只能在函数组件的主体内部调用

故事书因反应中的 eslint 错误而失败

自关闭一个组件后出现无效的钩子调用错误

Material UI 无效的钩子调用