美文网首页
React 学习笔记

React 学习笔记

作者: 逛简书的小强 | 来源:发表于2018-11-01 16:24 被阅读0次

    1. 跨组件向子组件传值的新方案

    通过context可以实现

    //根组件
    class MessageList extends React.Component {
      getChildContext() {
        return {color: "purple",text: "item text"};
      }
    
      render() {
        const children = this.props.messages.map((message) =>
          <Message text={message.text} />
        );
        return <div>{children}</div>;
      }
    }
    
    MessageList.childContextTypes = {
      color: React.PropTypes.string
      text: React.PropTypes.string
    };
    
    //中间组件
    class Message extends React.Component {
      render() {
        return (
          <div>
            <MessageItem />
            <Button>Delete</Button>
          </div>
        );
      }
    }
    
    //孙组件(接收组件)
    class MessageItem extends React.Component {
      render() {
        return (
          <div>
            {this.props.text}
          </div>
        );
      }
    }
    
    MessageItem.contextTypes = {
      text: React.PropTypes.string
    };
    
    class Button extends React.Component {
      render() {
        return (
          <button style={{background: this.context.color}}>
            {this.props.children}
          </button>
        );
      }
    }
    
    Button.contextTypes = {
      color: React.PropTypes.string
    };
    

    2. 克隆子组件

    1. 用途
      可以给子组件包裹props 比如包裹一个权限配置等等
    2. 注意点
      \color{red}{ 只能对this.props.children元素生效 }
    3. 使用方式
    React.Children.map(this.props.children, (child) => React.cloneElement(child, {
      msg: '新添加的props数据'
      ...
      ...
    }))
    

    3. 子组件children的相关操作

    1. React.Children.map 遍历子元素 并返回数组
    object React.Children.map(object children, function fn [, object context])
    
    使用方法:
    React.Children.map(this.props.children, function (child) {
        return <li>{child}</li>;
    })
    
    1. React.Children.forEach 遍历子元素 并返回数组
    React.Children.forEach(object children, function fn [, object context])
    
    1. React.Children.count 获取子元素的个数
    React.Children.count(object children) 
    
    1. React.Children.only 返回 children 中 仅有的子级。否则抛出异常。
    console.log(React.Children.only(this.props.children[0])); 
    //输出对象this.props.children[0]
    

    相关文章

      网友评论

          本文标题:React 学习笔记

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