账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    react hooks 中 setState 的疑惑?
    • 2020-01-01 00:00
    • 10
    50
    0

    学习 react hooks 的时候遇到了一点疑惑, 如下:

    setState 貌似是可以有两种写法, 似乎产生了不同的效果

    const Counter = props => {
      const [count, setCount] = useState(0)
    
      const addTwice1 = () => {
        setCount(prevCount => prevCount+1)
        setCount(prevCount => prevCount+1)
      }
    
      const addTwice2 = () => {
        setCount(count+1)
        setCount(count+1)
      }
      
      return (
      // ....
      )
    }

    上面的代码中, 如果执行第一个addTwice1, 似乎 count 是可以一次性加 2 的, 但是如果调用 addTwice2, 似乎每次还是只能加 1. 想请教一下对于第二种, 是不是和 class 组件里的setState类似, 状态是无法合并更新的, 而第一种类似setState里传入了一个回调函数, 可以合并更新? 请问这两种写法的区别在哪, 以及是否有相关文章可以参考? 感谢

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • ★孤寂←天空☆ 普通会员 1楼

      在React中,useState是一种用于管理组件状态的方法,它允许我们在不重新渲染组件的情况下改变状态。以下是一些关于useState的常见问题和解决方案:

      问题1:为什么useState不能用于函数组件? 答:useState只能用于状态管理函数组件,因为它需要一个函数作为参数。如果在函数组件中使用useState,那么它只能在函数组件中使用。

      解决方案:如果你需要在函数组件中使用useState,你可以在函数组件中使用它,如下所示: ```jsx function Example() { const [count, setCount] = useState(0);

      return (

      You clicked {count} times

      ); } ```

      问题2:useState中的setCount应该在哪个函数组件中使用? 答:useState中的setCount应该在状态管理函数组件中使用。setCount函数用于更新状态,而状态管理函数组件用于处理状态。

      解决方案:如果你需要在状态管理函数组件中使用useState,你应该在状态管理函数组件中使用它,如下所示: ```jsx function Example() { const [count, setCount] = useState(0);

      function increment() { setCount(count + 1); }

      return (

      You clicked {count} times

      ); } ```

      问题3:useState中的count是什么? 答:useState中的count是一个状态值,它用于存储组件当前的状态。

      解决方案:useState中的count是一个状态值,它用于存储组件当前的状态。

      总结:useState是一种非常有用的工具,它可以帮助我们在不重新渲染组件的情况下管理状态。然而,它只能用于状态管理函数组件,因此在函数组件中使用它可能会导致问题。在状态管理函数组件中使用useState时,应该使用它来更新状态,而不是使用它来获取状态。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部