美文网首页
跨级组件通信

跨级组件通信

作者: tenro | 来源:发表于2020-06-11 11:47 被阅读0次
当组件经过层层嵌套后,想要传值再用'props'就显得有点'2'了,
比较聪明的人往往会使用比较优雅的 'context'!   
既然描述的是 '比较聪明的人' 而不是 '非常聪明的人' 就注定'context是有局限性的'!
context本身是全局性的,全局性有个通病就是我要知道他是哪里来的就很难,
就像我在某个函数里面命名了一个全局的变量,
N年后,你要找到他在哪里声明的就费劲了,从而就导致'应用混乱,维护性差'!!!
故建议使用context是最好是不可变的全局性的信息,如:用户的信息,界面的颜色或主题等

跨级组件通信示例:
//子(孙子)组件
class Button extends Component {
      render()  {
            return (
                  <button style={{ backgound: this.context.color }} >
                        { this.props.children }
                  </button>
            )
      }
}

//声明contextTypes用于访问MessageList中定义的context数据
Button.contextTypes = {
    color: PropTypes.string
 };

//中间组件
class Message extends Component {
      render()  {
            return (
                  <div>
                        <Button>Delete</Button>
                  </div>
            )
      }
}

//父组件
class MessageList extends Component {
      //定义context需要实现的方法
      getChildContext(){
            return {
                    color: 'orange'
            }
      }
      render()  {
            return  <Message />;
      }
}

//声明context类型
MessageList.childContextTypes = {
      color: PropTypes.string
};
ReactDOM.render(
      <MessageList />,
      document.getElementById('app')
);

相关文章

  • react 跨级组件通信

    跨级组件通信所谓跨级组件通信,就是父组件向子组件的子组件通信,向更深层的子组件通信。跨级组件通信可以采用下面两种方...

  • 组件通信

    组件关系 组件关系可以分为父子组件通信、兄弟组件通信、跨级组件通信。 父子组件通信 1. 子组件使用 $emit(...

  • react之组件通信

    需要组件之进行通信的几种情况: 父组件向子组件通信 子组件向父组件通信 跨级组件通信 没有嵌套关系组件之间的通信 ...

  • 第七章 可复用性的组件详解(中)

    7.7 组件通信 组件关系可分为父子组件通信、兄弟组件通信、跨级组件通信 7.7.1 自定义事件—子组件给父组件传...

  • React组件通信的几种方式

    需要组件之进行通信的几种情况 父组件向子组件通信 子组件向父组件通信 跨级组件通信 没有嵌套关系组件之间的通信 1...

  • React中组件通信的几种方式

    需要组件之进行通信的几种情况 父组件向子组件通信 子组件向父组件通信 跨级组件通信 没有嵌套关系组件之间的通信 1...

  • React中组件通信

    需要组件之进行通信的几种情况 父组件向子组件通信 子组件向父组件通信 跨级组件通信 没有嵌套关系组件之间的通信 1...

  • 组件通信

    组件关系可以分为父子组件通信、兄弟组件通信、跨级组件通信 自定义事件--子组件给父组件传递数据 子组件$emit(...

  • React中组件通信的几种方式

    首次发表在个人博客 需要组件之进行通信的几种情况 父组件向子组件通信 子组件向父组件通信 跨级组件通信 没有嵌套关...

  • Vue组件通信

    总体来说,Vue中组件之间的通信场景如下图: 可以将其分为父子组件通信、兄弟组件通信、跨级组件通信。 1. 自定义...

网友评论

      本文标题:跨级组件通信

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