错误:
TypeError: (0 , _react.useState) is not a function
我目前的反应版本:
"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 没有钩子
分辨率是降级到
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从导入"react/cjs/react.development"导入了useState钩子,它不适用于生产。