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 挂钩,但它在生产环境中不起作用。
错误:
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 挂钩,但它在生产环境中不起作用。