首页 > 其他 > 详细

使用React.cloneElement()给子组件传值

时间:2019-03-07 12:44:44      阅读:378      评论:0      收藏:0      [点我收藏+]

React提供了一个克隆组件的API:

React.cloneElement(
    element,
    [props],
    [...child]
)

可以利用该方法,给子组件传值,使用如下:

class Parent extends Component{
    constructor(){
        super();
        this.state = {
            count: 1
        };
    }
    getChildren(){
        const _this = this;
        let { children } = _this.props;
        return React.Children.map(children, child => {
            return React.cloneElement(child, {
                count: _this.state.count
            });
        });
    }
    handleClick(){
        this.setState({
            count: this.state.count
        });
    }
    render(){
        return (
            <div>
                <button onClick={ this.handleClick.bind(this) }>点击增加次数</button>
                { this.getChildren() }
            </div>
        )
    }
}
class Child extends Component{
    render(){
        return (
            <div>
                这是子组件:{ this.props.count }
            </div>
        )
    }
}
class Test extends Component{
    render(){
        return (
            <Parent>
                <Child />
            </Parent>
        )
    }
}

点击父组件中的按钮,子组件中的数字会增加。父组件成功向子组件传值。

注意:
如果写成下面这样则无法传值:

class Test extends Component{
    render(){
        return (
            <Parent>
                <div>
                    这是子组件:{ this.props.count }
                </div>
            </Parent>
        )
    }
}

本文转载自:https://blog.csdn.net/csm0912/article/details/85244970

使用React.cloneElement()给子组件传值

原文:https://www.cnblogs.com/smart-girl/p/react.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!