React传递道具向下到所有后代组件

sli*_*801 4 javascript children descendant reactjs

用例是我想"毫不费力地"将某些prop值传递给所有后代组件.不确定这在React中是否可行.

所以不要这样做:

class Parent extends Component {
    constructor() {
        super(props);
        this.props.componentID = "123456";
    }
    render() {
        return <Child1 componentID={this.props.componentID} />
    }
}

class Child1 extends Component {

    render() {
        return <Child2 componentID={this.props.componentID} />
    }
}

class Child2 extends Component {

    render() {
        return <div>{this.props.componentID}</div>
    }
}
Run Code Online (Sandbox Code Playgroud)

做这样的事情:

class Parent extends Component {
    constructor() {
        this.props.componentID = "123456";
    }

    passComponentIDToAllDescendantComponents() {
        // Some super nifty code
    }

    render() {
        return <Child1 />
    }
}

// etc...
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助

mad*_*ox2 5

您可以使用" 上下文"功能将数据传递给子项.在你的情况下,它可能看起来像这样:

class Parent extends Component {
    getChildContext() {
        return {componentID: "123456"};
    }
    render() {
        return <Child1 />
    }
}

Parent.childContextTypes = {
    componentID: React.PropTypes.string
};

class Child1 extends Component {

    render() {
        return <Child2 />
    }
}

class Child2 extends Component {

    render() {
        return <div>{this.context.componentID}</div>
    }
}

Child2.contextTypes = {
    componentID: React.PropTypes.string
};
Run Code Online (Sandbox Code Playgroud)