react hook useState 无法存储 json 或 string

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

或者也许是我的错误?


ABOUTYOU
浏览 311回答 2
2回答

素胚勾勒不出你

setState是async。所以你不能在设置状态后立即获取数据。如果您尝试console.log在设置状态后进行状态,您将始终获得先前的状态。如果你想获得新数据,那么你应该有useEffect依赖数组的专用钩子,useEffect( () => {   console.log(data)},[data] //This is dependency and it will run only when data is changed) 

开满天机

问题的标题具有误导性。我的意思是,它是否是 json 字符串并不重要。解决方案很简单, console.log(data);只需将 useEffect 块移出并立即移出return(如果之前return将无法响应)。这可能就是原始海报想要的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript