React 16.7 Hooks:`react.useState`不是函数

zwl*_*619 7 reactjs react-hooks

我正在尝试带有反应16.7的钩子的功能组件,有一个错误:

在此输入图像描述

SRC /组件/页脚/ index.js

function Footer() {
  const [selectedTab, setSelectedTab] = useState('redTab');
  const [hidden, setHidden] = useState(false);
  const [fullScreen, setFullScreen] = useState(false);
 //...
}
Run Code Online (Sandbox Code Playgroud)

的package.json

在此输入图像描述

我该怎么办?

Tho*_*lle 10

确保您也升级react-dom16.7.0-alpha.0.

的package.json

{
  "dependencies": {
    "react": "16.7.0-alpha.0",
    "react-dom" "16.7.0-alpha.0",
    ...
  },
  ...
}
Run Code Online (Sandbox Code Playgroud)

也许你只是在package.json没有安装新版本的情况下碰撞了版本.您可以node_modules再次删除并安装.

npm ci
Run Code Online (Sandbox Code Playgroud)

const { useState } = React;

function Footer() {
  const [selectedTab, setSelectedTab] = useState('redTab');
  const [hidden, setHidden] = useState(false);
  const [fullScreen, setFullScreen] = useState(false);
  
  return (
    <div>
      <button onClick={() => setSelectedTab('blueTab')}>{selectedTab}</button>
      <button onClick={() => setHidden(isHidden => !isHidden)}>
        {hidden ? 'hidden' : 'visible'}
      </button>
      <button onClick={() => setFullScreen(isFullScreen => !isFullScreen)}>
        {fullScreen ? 'fullscreen' : 'windowed'}
      </button>
    </div>
  );
}

ReactDOM.render(
  <Footer />,
  document.getElementById('root')
);
Run Code Online (Sandbox Code Playgroud)
<script src="https://unpkg.com/react@16.7.0-alpha.0/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16.7.0-alpha.0/umd/react-dom.development.js"></script>

<div id="root"></div>
Run Code Online (Sandbox Code Playgroud)