React js:如何在JSX组件中设置存储在变量中的props

时间:2016-07-01 12:20:02

标签: javascript reactjs react-jsx

假设我已经定义了一个组件:

class Co extends React.Component {
    render = () => {
        const name = this.props.name;
        return (
            <p>Hello, my name is {name}</p>
        )
    }
}

并将其存储在变量中:

const co = <Co />;

如何使用变量设置组件的道具? co.props.set会有效吗?

2 个答案:

答案 0 :(得分:4)

据我所知,您不想使用JSX语法渲染组件,而是使用存储的变量。你可以看一下React.cloneElement。这应该做你想要的:

{React.cloneElement(co, {name: 'hans'})}

请参阅:https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement

答案 1 :(得分:0)

您可以照常设置道具

<Co name="Name"/>

如果element是某个组件的子元素,那么您可以使用React.cloneElement()

class Parent extends React.Component {
    render = () => {
        const name = this.props.name;
        return (
            <SomeComp><Co/></SomeComp>
        )
    }
}
class SomeComp extends React.Component {
    render = () => {
        const name = this.props.name;
        return (
            <SomeComp>{React.cloneElement(this.props.children, {name:"Name"})}</SomeComp>
        )
    }
}