React 16.7 TypeError: (0 , _react.useState) is not a function

React 16.7 TypeError: (0 , _react.useState) is not a function

错误:

  TypeError: (0 , _react.useState) is not a function

我当前的 React 版本:

   "react": "^16.7",
   "react-dom": "^16.7",

src/App.js:

  import {memo, useState} from 'react'
  export default memo(() => {
     useState(false)
     return 'OK'
  })

src/App.test.js:

   import React from 'react'
   import App from './App'
   import renderer from 'react-test-renderer'
   it('renders without crashing', () => {
        const tree = renderer.create(<App />).toJSON()
        expect(tree).toMatchSnapshot()
   })

如何解决这个问题?

根本原因是react V16.7没有hooks

决议是降级到

   npm i react@next react-dom@next 

截至 2018 年 12 月 20 日是 16.7.0-alpha.2:

    yarn add react@next react-dom@next

然后失去测试渲染器:

 import React from 'react'
 import ReactDOM from 'react-dom'
 import App from './App'
 it('renders without crashing', () => {
    const div = document.createElement('div')
    ReactDOM.render(<App />, div)
    ReactDOM.unmountComponentAtNode(div)
 })

这是package.json应该有的:

  "react": "^16.7.0-alpha.2",
  "react-dom": "^16.7.0-alpha.2",

就我而言,错误在于导入。我的 IDE 从 import 'react/cjs/react.development' 导入了 useState 挂钩,但它在生产环境中不起作用。