首页 > 解决方案 > UseState() 在 useEffect() 中返回正确的值,但函数内部没有任何内容

问题描述

我面临以下代码的问题:

const [selectedItem, setSelectedItem] = useState("")

useEffect(() => {
    console.log("effect: " + selectedItem)
}, [selectedItem])

const myFunc = () => {
    console.log(selectedItem)
    setSelectedItem("2")
    console.log(selectedItem)
}

会发生什么,是我更新了SelectedItem()in myFunc。在useEffect()循环selectedItem中正确打印。但是在myFunc我不断得到一个空字符串(初始状态),无论我触发了多少次函数。

我的代码相对复杂 - 通常它包括几个 DOM 更新,因为我正在递归地构建一个带有无序列表的树视图。

myFunc单击其中一个元素时会触发——<li>但这会导致 的相当奇怪的行为UseState()吗?

我知道这useState()可以说是一个异步函数——但这可能不是这里的问题,因为多次触发该函数仍然会打印“”。

标签: javascriptreactjs

解决方案


推荐阅读