React实现组件间通信的几种方式小结

 更新时间:2024年07月12日 09:21:27   作者:落日沉溺于海  
在React应用中,组件间的通信是一个基础而关键的概念,理解和掌握不同组件之间的通信方式,可以帮助我们构建出更加模块化、可维护和可扩展的应用程序,React提供了多种组件通信的方法,本文给大家详细的介绍了这些方法,需要的朋友可以参考下

一、Props向下传递(Top-Down Propagation)

父组件通过props将其状态或数据传递给子组件。

父组件:

class ParentComponent extends React.Component {
  state = { message: 'Hello World' };
 
  render() {
    return <ChildComponent message={this.state.message} />;
  }
}

子组件;

class ChildComponent extends React.Component {
  render() {
    return <div>{this.props.message}</div>;
  }
}

二、Callback函数

父组件向子组件传递一个回调函数,子组件在需要时调用这个函数与父组件通信。

父组件:

class ParentComponent extends React.Component {
  handleData = (data) => {
    console.log('Received from child:', data);
  };
 
  render() {
    return <ChildComponent sendData={this.handleData} />;
  }
}

子组件:

class ChildComponent extends React.Component {
  someEvent = () => {
    this.props.sendData('Data from child');
  };
 
  render() {
    return <button onClick={this.someEvent}>Send Data to Parent</button>;
  }
}

三、Lifting State Up(状态提升)

当多个组件需要共享状态时,可以将状态提升到它们共同的父组件中。

父组件:

class ParentComponent extends React.Component {
  state = { sharedData: 'Shared Data' };
 
  render() {
    return (
      <>
        <ChildA sharedData={this.state.sharedData} />
        <ChildB sharedData={this.state.sharedData} />
      </>
    );
  }
}

子组件A和B:

class ChildComponent extends React.Component {
  render() {
    return <div>{this.props.sharedData}</div>;
  }
}

四、 Context(上下文)

React的Context API允许你共享值给组件树中的所有组件,而不必显式地通过每个层级传递props

创建Context:

const MyContext = React.createContext(defaultValue);

提供Context值:

<MyContext.Provider value={/* 一些值 */}>
  {/* 组件树 */}
</MyContext.Provider>

在子组件中使用Context:

class ChildComponent extends React.Component {
  render() {
    return (
      <MyContext.Consumer>
        {value => <div>{value}</div>}
      </MyContext.Consumer>
    );
  }
}

或者使用useContext钩子:

import { useContext } from 'react';
 
const ChildComponent = () => {
  const value = useContext(MyContext);
  return <div>{value}</div>;
};

五、Custom Hooks(自定义钩子)

自定义钩子允许你提取组件逻辑,使其可以在多个组件间重用。

自定义钩子:

function useCustomHook() {
  const [state, setState] = useState(initialState);
 
  // 钩子的逻辑...
 
  return state;
}

在组件中使用自定义钩子:

const Component = () => {
  const state = useCustomHook();
 
  return <div>{state}</div>;
};

六、 Higher-Order Components(高阶组件)

高阶组件是React中的一个高级技术,它通过包装一个组件来扩展其功能。

高阶组件:

function enhanceComponent(WrappedComponent) {
  return class extends React.Component {
    // 扩展逻辑...
 
    render() {
      return <WrappedComponent {...this.props} />;
    }
  };
}
//使用高阶组件:
 
const EnhancedComponent = enhanceComponent(OriginalComponent);

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

相关文章

  • React 进入页面后自动 focus 到某个输入框的解决方案

    React 进入页面后自动 focus 到某个输入框的解决方案

    React.js 当中提供了 ref 属性来帮助我们获取已经挂载的元素的 DOM 节点,你可以给某个 JSX 元素加上 ref属性,这篇文章主要介绍了React 进入页面以后自动 focus 到某个输入框,需要的朋友可以参考下
    2024-02-02
  • React18系列commit从0实现源码解析

    React18系列commit从0实现源码解析

    这篇文章主要为大家介绍了React18系列commit从0实现源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • ReactJs设置css样式的方法

    ReactJs设置css样式的方法

    本篇文章主要介绍了ReactJs设置css样式的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • React操作真实DOM实现动态吸底部的示例

    React操作真实DOM实现动态吸底部的示例

    本篇文章主要介绍了React操作真实DOM实现动态吸底部的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • React组件refs的使用详解

    React组件refs的使用详解

    这篇文章主要介绍了React组件refs的使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • 无废话快速上手React路由开发

    无废话快速上手React路由开发

    本文以简洁为目标,帮助快速上手react-router-dom默认你接触过路由相关的开发,通过实例代码讲解的很详细,对React路由相关知识感兴趣的朋友一起看看吧
    2021-05-05
  • ahooks整体架构及React工具库源码解读

    ahooks整体架构及React工具库源码解读

    这篇文章主要为大家介绍了ahooks整体架构及React工具库的源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • 详解Redux的工作流程

    详解Redux的工作流程

    这篇文章主要介绍了Redux的工作流程,redux是一个专门用于做状态管理的JS库,它可以在react、angular、vue等项目中,但基本与react配合使用,需要的朋友可以参考下
    2022-08-08
  • 浅谈React中的元素、组件、实例和节点

    浅谈React中的元素、组件、实例和节点

    这篇文章主要介绍了浅谈React中的元素、组件、实例和节点,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • React通过父组件传递类名给子组件的实现方法

    React通过父组件传递类名给子组件的实现方法

    React 是一个用于构建用户界面的 JAVASCRIPT 库。这篇文章主要介绍了React通过父组件传递类名给子组件的方法,需要的朋友可以参考下
    2017-11-11

最新评论