在 useEffect 中设置一个变量的状态后,我在下一行将它 console.log 它给出
undefined
为什么会这样,我如何使用状态变量?
const [item, setItem] = useState();
useEffect(() => {
const doFunction = async () => {
try{
setItem("hi")
console.log(item)
},[item]);
doFunction()
答案 0 :(得分:1)
使用钩子是不可能的,因为 setState 是异步函数,这意味着不能立即设置项目的状态。您可以创建另一个 useEffect 以在状态更改时进行处理。
useEffect( () => {
setItems( "hi" )
}, [] ) // empty array means "when component mounted"
useEffect( () => {
if ( items ) {
/* do something here */
}
}, [items] ) // array with items means "when itemas state change"
如果你真的想使用你在同一个钩子中传递给 setState 的值,你可以将它存储在普通变量中一段时间。
useEffect( () => {
const temp = "hi"
setItems( temp )
console.log( items ) // undefined
console.log( temp ) // "hi"
}, [] ) // empty array means "when component mounted"