如何在同一个 useEffect 钩子中使用状态?

时间:2021-03-18 17:25:23

标签: javascript reactjs react-hooks state use-effect

在 useEffect 中设置一个变量的状态后,我在下一行将它 console.log 它给出 undefined

为什么会这样,我如何使用状态变量?

const [item, setItem] = useState();

    useEffect(() => {
      const doFunction = async () => {
        try{
          setItem("hi")
          console.log(item)
      },[item]);
    doFunction()

1 个答案:

答案 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"