Reactjs useState第二个参数是什么?为什么我会有这样一句话;不是一个函数;错误
我得到了这个react应用程序,我正在使用useState钩子更新useEffect中的状态:Reactjs useState第二个参数是什么?为什么我会有这样一句话;不是一个函数;错误,reactjs,react-hooks,mern,use-effect,use-state,Reactjs,React Hooks,Mern,Use Effect,Use State,我得到了这个react应用程序,我正在使用useState钩子更新useEffect中的状态: import React, {useState, useEffect} from 'react'; export default function App() { const {userData, setUserData} = useState({ token : undefined, user: undefined }); useEffect(() =>{
import React, {useState, useEffect} from 'react';
export default function App() {
const {userData, setUserData} = useState({
token : undefined,
user: undefined
});
useEffect(() =>{
const checkLoggedIn = async () => {
let token = localStorage.getItem("auth-token");
if(token === null){
localStorage.setItem("auth-token", "");
token = "";
}
const tokenRes = await Axios.post(
"http://localhost:5000/users/tokenIsValid",
null,
{headers: {"x-auth-token": token}}
);
if(tokenRes.data){
const userRes = await Axios.get("http://localhost:5000/users/",{
headers: {"x-auth-token": token},
});
setUserData({
token,
user: userRes
});
}
console.log(tokenRes.data);
};
checkLoggedIn();
}, [setUserData]);
当我运行该命令时,会出现以下错误:
我浏览了一下,发现有时与react、react dom和react router dom版本有关,我检查了它们,但它们看起来更新了:
package.json:
“依赖项”:{
“axios”:“^0.19.2”,
“cra模板”:“1.0.3”,
“反应”:“^16.13.1”,
“react dom”:“^16.13.1”,
“反应路由器dom”:“^5.2.0”,
“反应脚本”:“3.4.1”
},
所以我想知道第二个参数,在本例中是“setUserData”返回什么,以及为什么会出现这个错误
谢谢,您好。调用
useState
hook将返回数组中的状态值和setter函数,第一个元素是状态值,第二个元素是setter函数
您不应该从对象中分解值userData
和setUserData
试试这个
const [userData, setUserData] = useState({
token : undefined,
user: undefined
});
注意无需在
useffect
的依赖项数组中将setUserData
的值作为依赖项传递,它应该是const[userData,setUserData]=useState({})代码>。注意数组的破坏而不是对象。它解决了!哇,非常感谢你,我想这是因为我不清楚什么是“数组破坏”,我将进一步调查,再次感谢:)它解决了!哇,非常感谢,我想这是因为我不清楚什么是“数组破坏”,我将对此进行更多调查,再次感谢:)