React父子组件互相通信的实现示例

 更新时间:2023年11月28日 14:54:28   作者:白鲸ld  
React中是单向数据流,数据只能从父组件通过属性的方式传给其子组件,本文主要介绍了React父子组件互相通信的实现示例,具有一定的参考价值,感兴趣的可以了解一下

在写项目的时候遇到了父子组件互相调用对方的方法,然后知道用什么逻辑写,但是就是没写对过,开始用的props和ref,但是报错就去用的context,context在引用的时候还是报错,所以最后还是用的props和ref,下边是实现的案例。

父组件 Father.tsx

import React, { useState, useRef } from 'react';
import Child from './components/child'
const Father = ()=>{
	const childRef = useRef<any>();
	const params = {所需参数....}
	const dataList = async (params: any) => {
        try {
            const { ret, data } = await specialList(params);
            if (ret === 1) {
                处理的逻辑....
            }
        } catch (error) {
            console.log(error);
        }
    }
    //调用子组件的方法,看要在哪里调用就在哪里使用
	await childRef?.current.infosItem();
	return (
		<>
			<Child datalist={dataList} ref={childRef}/>
		</>
	)
}
export default Father;

子组件:child.tsx

import React, { useEffect, useState, forwardRef, useImperativeHandle } from 'react';
const Child = (props: any,ref: any)=>{
	const { datalist } = props;
	const infosItem = async () => {
        try {
            const { ret, data } = await infos(params);
            if (ret === 1) {
      			//处理业务逻辑...
            }
        } catch (error) {
           console.log(error);
        }
    };
    const par = {datalist需要的参数};
    await datalist(par) //在需要的时候调用
    //将这个方法暴露出来,让父组件可以调用
    useImperativeHandle(ref, ()=>({
        infosItem
    }));
    return (
    	<></>
	)
}
export default forwardRef(Child)

我这个业务是编辑,就是子组件编辑之后父组件的数据要变化,父组件编辑子组件也要变化,我开始认为就是点击编辑框上的确定之后调用对方方法,但是发现并没有起效果,一直认为还是自己通信问题,后来换了一下调用的地方,就起效果了,要放在调用编辑接口那个地方,因为异步问题。目前就用的props和ref来实现父子之间的通信的,还有其他通信方式,等用到了再更新吧。
useImperativeHandle可以看这个Hook具体含义。

到此这篇关于React父子组件互相通信的实现示例的文章就介绍到这了,更多相关React父子组件通信内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • react 定位组件源码解析

    react 定位组件源码解析

    这篇文章主要为大家介绍了react定位组件源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • React hooks的优缺点详解

    React hooks的优缺点详解

    这篇文章主要介绍了React hooks的优缺点详解,帮助大家更好的理解和学习使用React,感兴趣的朋友可以了解下
    2021-04-04
  • React新扩展函数setState与lazyLoad及hook介绍

    React新扩展函数setState与lazyLoad及hook介绍

    这篇文章主要介绍了React新扩展函数setState与lazyLoad及hook,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-12-12
  • React实现歌词滚动效果(跟随音乐播放时间滚动)

    React实现歌词滚动效果(跟随音乐播放时间滚动)

    这篇文章主要为大家详细介绍了React实现歌词滚动效果(跟随音乐播放使劲按滚动),文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2024-02-02
  • 详解React中的useMemo和useCallback的区别

    详解React中的useMemo和useCallback的区别

    React中的useMemo和useCallback是两个重要的Hooks。常常被用于优化组件的性能。虽然这两个Hooks看起来很相似,但它们彼此之间还是有很大的区别的,随着小编一起来学习吧
    2023-04-04
  • React中的useEffect四种用法分享

    React中的useEffect四种用法分享

    这篇文章主要给大家分享React中的useEffect四种用法,useEffect中 触发更新,重复的 useEffect,依赖值触发回调,useEffect 的返回值,通过代码示例介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • react-router-dom v6版本实现Tabs路由缓存切换功能

    react-router-dom v6版本实现Tabs路由缓存切换功能

    今天有人问我怎么实现React-Router-dom类似标签页缓存,很久以前用的是react-router v5那个比较容易实现,v6变化挺大,但了解react的机制和react-router的机制就容易了,本文介绍react-router-dom v6版本实现Tabs路由缓存切换,感兴趣的朋友一起看看吧
    2023-10-10
  • React 中的双缓存 Fiber 树机制详解

    React 中的双缓存 Fiber 树机制详解

    本文详细介绍了React中的双缓存Fiber树机制,包括概念、核心流程、优势以及面试中的常见问题和标准回答,通过"通俗+专业"的方式,帮助面试者全面理解React的性能优化体系,掌握双缓存Fiber树的关键点,感兴趣的朋友跟随小编一起看看吧
    2026-03-03
  • React Native实际项目中的经验和踩坑记录

    React Native实际项目中的经验和踩坑记录

    在当今移动应用开发的浪潮中,React Native以其跨平台、高效开发的特点脱颖而出,成为众多开发者首选的框架之一,这篇文章主要介绍了React Native实际项目中的经验和踩坑记录的相关资料,需要的朋友可以参考下
    2026-03-03
  • React 实现具备吸顶和吸底功能组件实例

    React 实现具备吸顶和吸底功能组件实例

    这篇文章主要为大家介绍了React 实现具备吸顶和吸底功能组件实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02

最新评论