美文网首页
JS异步解决父子组件传值问题

JS异步解决父子组件传值问题

作者: 念雅_a9ef | 来源:发表于2020-11-19 16:10 被阅读0次

    业务场景:在父组件加载页面的时候,获取子组件中通过网络请求获取的值,
    用到的hook:useEffect()、useRef()。

    这里是父组件

    const BaseAssestsTreeContext = createContext(); 
    const myRefAssetMonitor=useRef()
    
    //父组件关键useEffect
      useEffect(() => {
        console.log("====父页面,useEffect方法")
        console.log("===进来父页面去获取 getD()",myRefAssetMonitor.current.getD())
        setTimeout(()=>{
          if(groupId){
            queryAreaAsset(groupId);
          }else{
            console.log("===延时去获取 子页面的钩子方法 myRefAssetMonitor.current.getD()",myRefAssetMonitor.current)
            queryAreaAsset(myRefAssetMonitor.current.getD());
            setGroupId(myRefAssetMonitor.current.getD())
          }
        },300)
      }, [])
     <div className={style.bg}>
            <div className={style.bg_tree}>
              <BaseAssestsTreeContext.Provider>
                <BaseAssestsTree myContext={BaseAssestsTreeContext} myRef={myRefAssetMonitor}/>
              </BaseAssestsTreeContext.Provider>
            </div>
            <div />
    

    这里是子组件

      useEffect(() => {
        console.log("====子页面  资产树 useEffect方法")
        tree();//这里获取网络请求
      }, []);
    
      //想暴露给父组件的值 
      useImperativeHandle(myRef, () => ({
        getD: () => {
          return defaultGroupId;
        }
      }));
    
    父子组件渲染顺序和钩子函数值.png

    相关文章

      网友评论

          本文标题:JS异步解决父子组件传值问题

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