React-如何将prop传递给作为prop传递的组件

我有一个React组件(React v15.5.4),您可以将其他组件传递给:

class CustomForm extends React.Component {

...

render() {

return (

<div>

{this.props.component}

</div>

);

}

}

我有一个使用它的不同组件:

class SomeContainer extends React.Component {

...

render() {

let someObjectVariable = {someProperty: 'someValue'};

return (

<CustomForm

component={<SomeInnerComponent someProp={'someInnerComponentOwnProp'}/>}

object={someObjectVariable}

/>

);

}

}

一切都很好,但是我想将 传递给 的子组件(在本例中为

),因为在实际代码中,您可以将多个组件传递给它,而不仅仅是示例中的一个。

请注意,我还需要传递 自己的道具。

有没有办法做到这一点?

回答:

您可以使用React.cloneElement来实现。

像这样:

class CustomForm extends React.Component {

...

render() {

return (

<div>

{React.cloneElement(this.props.component,{ customProps: this.props.object })}

</div>

);

}

}

工作代码:

class Parent extends React.Component{

render() {

return(

<Child a={1} comp={<GChild/>} />

)

}

}

class Child extends React.Component{

constructor(){

super();

this.state = {b: 1};

this.updateB = this.updateB.bind(this);

}

updateB(){

this.setState(prevState => ({b: prevState.b+1}))

}

render(){

var Comp = this.props.comp;

return (

<div>

{React.cloneElement(Comp, {b: this.state.b})}

<button onClick={this.updateB}>Click to update b</button>

</div>

);

}

}

const GChild = props => <div>{JSON.stringify(props)}</div>;

ReactDOM.render(

<Parent />,

document.getElementById('container')

);

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

<div id='container' />

以上是 React-如何将prop传递给作为prop传递的组件 的全部内容, 来源链接: utcz.com/qa/417229.html

回到顶部