Javascript react hook useState无法存储json或字符串

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

正如标题所说,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

或者可能是我的错误?

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)