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

业务场景:在父组件加载页面的时候,获取子组件中通过网络请求获取的值,
用到的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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容