I have this component:
import React, { useState, useEffect } from \"react\";
import ReactDOM from \"react-dom\";
function App() {
const [count, setCount]
I just updated to the latest version of react and react DOM, it works for me. Check React versions here
Fixed mine by calling React.useState(0).
If a react version is new enough, it just has to use React.useState.
You may get same error when using jest. So to fix the error I had to update react-test-renderer to have the same version as react and react-dom
yarn add -D react-test-renderer@next
Or
npm i react-test-renderer@next
All react, react-dom and react-test-renderer should contain same version
"react": "^16.7.0-alpha.0",
"react-dom": "^16.7.0-alpha.0",
"react-test-renderer": "^16.7.0-alpha.0"
Make sure that you have imported useState correctly.
import React, {useState} from 'react';
There could be many reasons, and most are due to version incompatibilites or using a ^ in package.json:
react and react-dom are of the same versionEnsure that you have also updated the react-dom package and it is of the same version as react. In general react and react-dom should always be the same version in package.json as the React team updates them together.
If you want to install React 16.7.0-alpha.2, check that you are not using the ^ as you will install 16.7 instead, which doesn't have hooks.
Example package.json:
{
...
"dependencies": {
"react": "16.8.4", // Make sure version is same as react-dom
"react-dom": "16.8.4",
...
}
}
react-test-renderer is of the same version as react and react-domIf you are using Jest, ensure that react-test-renderer is of the same version as react and react-dom:
Example package.json:
{
...
"dependencies": {
"react": "16.8.4",
"react-dom": "16.8.4",
"react-test-renderer": "16.8.4",
...
}
}
Use React and {useState}:
import React,{useState} from 'react';
const Renu = () => {
const[heart,heartSet]= useState('renu');
return(
<h1>vikas love {heart}</h1>
)
}
export default Renu;