Javascript react hook useState无法存储json或字符串
正如标题所说,react hook useState似乎无法存储我的字符串 这是我的密码Javascript react hook useState无法存储json或字符串,javascript,reactjs,Javascript,Reactjs,正如标题所说,react hook useState似乎无法存储我的字符串 这是我的密码 const [data, setData] = useState(null); useEffect(() => { fetch("http://api.localhost/user/shoppingcart", { headers: { Authorization: cookies.Authorization
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
或者可能是我的错误?
setState
是async
。因此,您无法在设置状态后立即获取数据
如果您在设置状态后尝试console.log
状态,您将始终获得以前的状态。
如果你想获得新数据,那么你应该有一个专门的useffect
hook和dependency数组
useEffect( () => {
console.log(data)
},
[data] //This is dependency and it will run only when data is changed
)
setState
是async
。因此,您无法在设置状态后立即获取数据
如果您在设置状态后尝试console.log
状态,您将始终获得以前的状态。
如果你想获得新数据,那么你应该有一个专门的useffect
hook和dependency数组
useEffect( () => {
console.log(data)
},
[data] //This is dependency and it will run only when data is changed
)
这个问题的标题有误导性。我的意思是,它是否是json字符串并不重要。解决方案非常简单,只需移动
console.log(数据)代码>退出useEffect块并在返回
之后(如果在返回之前
将无法响应)。这可能正是原始海报想要的。问题的标题具有误导性。我的意思是,它是否是json字符串并不重要。解决方案非常简单,只需移动console.log(数据)代码>退出useEffect块并在返回
之后(如果在返回之前
将无法响应)。这可能是原始海报想要的。事件可能重复的可能重复。同样,如果setData是同步的,数据仍然会有null,因为行const[data,setData]=useState(null)代码>在下一次渲染之前不会执行。此外,如果setData是同步的,则事件数据仍将为null,因为行const[data,setData]=useState(null)在下一次渲染之前,不会执行代码>。