正如标题所说,react hook useState 似乎无法存储我的字符串这是我的代码const [data, setData] = useState(null);useEffect(() => { fetch("http://api.localhost/user/shoppingcart", { headers: { Authorization: cookies.Authorization } }) .then(res => res.json()) .then( result => { console.log(result); setData(result); console.log(data); }); }, []);第一个“console.log”,我可以得到正确的字符串。[{"shoes":1}, {"shirt":2}]但是第二个“console.log”,我得到一个空字符串。null或者也许是我的错误?
2 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
setState是async。所以你不能在设置状态后立即获取数据。
如果您尝试console.log在设置状态后进行状态,您将始终获得先前的状态。
如果你想获得新数据,那么你应该有useEffect依赖数组的专用钩子,
useEffect( () => {
console.log(data)
},
[data] //This is dependency and it will run only when data is changed
)
开满天机
TA贡献1786条经验 获得超13个赞
问题的标题具有误导性。我的意思是,它是否是 json 字符串并不重要。解决方案很简单, console.log(data);
只需将 useEffect 块移出并立即移出return
(如果之前return
将无法响应)。这可能就是原始海报想要的。
添加回答
举报
0/150
提交
取消