react组件通信方式

react组件的通信方式?

  • 父组件与子组件之间的通信。
  • 父组件通过props向子组件传递数据
    //子组件
    class Child =(props) => {
        return <div>{props.name}</div>
    }
    
    //父组件
    
    class parent = () => {
        <Child name="test" />
    }

     

  • 子组件与父组件之间的通信。
  • 子组件通过props+回调函数向父组件传递数据。
    //子组件
    class Child = (props) => {
        const add = (value) => {
            props.callback(value);
        }
        return <p onClick={() => add('test')}>+</p> 
    }
    
    //父组件
    class Parent () => {
        const callback = (value) => console.log(value);
        return () {
            <Child callback={callback}  />
        }
    }
  • 跨级组件之间的通信。
  • 如果使用props从父组件到目标组件进行层层传递,如果组件层级较深,就增加复杂程度,并且props并不是中间件需要的参数。
  • 使用context,context就相当于一个大容器,可以把可能多个组件需要的数据全部都放在里面,这样不管嵌套多深,都可以随时获取。对层级过深的久可以使用context。
    const context = createContext();
    
    //  子组件的子组件 
    class GrandChild extends Component {
        render(){
            return (
                <context.Consumer>
                    {
                        name => <h1>我的名字是:{name}</h1>
                    }
                </context.Consumer>
            ) 
        }
    }
    
    //  子组件
    const Child = () =>{
        return (
            <GrandChild/>
        )
    }
    // 父组件
    class Parent extends Component {
          state = {
              name:"test"
          }
          render(){
              const {name} = this.state
              return (
              <context.Provider value={name}>
                  <Child></Child>
              </context.Provider> 
              )
          }
    }

     

  • 非嵌套关系的组件通信。
  • 可以通过redux进行全局状态管理
  • 如果是兄弟组件,可以找父级组件,结合父子组件进行通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值