反应原生数组状态不同步

时间:2021-01-11 16:59:44

标签: react-native

你好 stackoverflow 我有一个关于 React Native 的问题,我正在开发我的功能,它允许我喜欢一个帖子,但是当我将我的 id 推送到我的数组时,我的控制台是空的。 要查看我的表格,我必须再次单击另一个帖子,以便我的第一个 ID 显示在我的表格中。

这是我的代码

 const [liked, setLiked] = useState([])

    const arr = []

    const Like = (item) => {
        if (liked.indexOf(item) === -1) {
            const newArr = [...liked]
            newArr.push(item)
            setLiked(newArr)
            console.log(liked)
            console.log("ADD ID")
        }
    }
    


    const removelike = (item) => {
        if (liked.indexOf(item) >= 0) {
        console.log(liked.indexOf(item))
        const DeleteID = liked
        DeleteID.splice(item, 1)
        setLiked(DeleteID)
        console.log("Delete ID")
        }
    }

1 个答案:

答案 0 :(得分:0)

使用的 useState 实际上是异步的。所以在 setLike 之后喜欢的控制台日志不会显示更新的值。要检查值,您需要在 useEffect 中控制该值

useEffect(()=> {
    console.log('liked',liked);    
}, [liked])

你可以在 useEffect 中执行额外的操作,因为它只会在 Liked 的值改变后被调用