UseState 随机返回数据

时间:2021-02-09 15:42:35

标签: reactjs react-hooks

我正在获取 API 并设置一些项目:

  const [items, setItems] = useState([]);

    function displayUser() {
      axios({
        // fetching logic ..
        },
      }).then((res) => {
        // result are return ..
        console.log("RESPONSE: ", res);
         // I wish to set items here 
        setItems(res.data[0]);
      });
    }


 useEffect(() => {
   displayUser() // executing my function

 }, []);

    useEffect(() => {
      console.log("ITEMS AFTER: ", items);
    
    }, [items]);

api每次都返回结果,但不是每次都设置items,很随机,不知道是什么问题。

如果我控制台记录来自 API 的响应,我有我的数组,因为它是随机的项目。

2 个答案:

答案 0 :(得分:1)

setItems() 是异步方法,不能在 setItems() 之后立即获取更新的值。

您应该使用另一个 useEffect 并添加一个 items 依赖项来检查更新的状态值。

useEffect(() => {
  console.log("ITEMS: ",items)
}, [items]);

答案 1 :(得分:0)

由于 items 是一个数组,您可能会看到这个 issue。我建议使用 JSON.stringify(items) 作为依赖项。

useEffect(() => {
  console.log("ITEMS: ",items)
}, [JSON.stringify(items)]);