美文网首页react
react hooks 踩坑

react hooks 踩坑

作者: 别过经年 | 来源:发表于2019-06-11 18:17 被阅读3次

    1. useState返回的state只会在组件第一次初始化的时候被计算出来

    比如你的state依赖于props,这个时候useState无法感知props的变化,那么props更新 state并不会更新,useState相当于class组件中的constructor,只执行一次,如果state想继续同步props,那么可以使用useEffect,比如

    function Avatar(props) {
      const [user, setUser] = React.useState({...props.user});
    
      React.useEffect(() => {
          setUser(props.user);
      }, [props.user])
    
      return user.avatar ? 
             (<img src={user.avatar}/>)
            : (<p>Loading...</p>);
    }
    

    -- React.useState does not reload state from props

    但是props改变usestate参数的如果是通过函数计算得到的值,该函数在props改变的时候任然会被执行,但useState返回的state依然是组件初始化的值,那么useState中的函数计算就是没有必要的,可以惰性初始 state

    const [state, setState] = useState(() => {
      const initialState = someExpensiveComputation(props);
      return initialState;
    });
    

    传入一个函数,在函数中计算并返回初始的 state,此函数只在初始渲染时被调用,后面props改变不会去执行someExpensiveComputation函数。

    -- 精读《Function VS Class 组件》
    -- React Hooks 方式下 props 到 state 的值同步

    相关文章

      网友评论

        本文标题:react hooks 踩坑

        本文链接:https://www.haomeiwen.com/subject/qbkcfctx.html