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

React js: How to set props in JSX components which store in variable

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

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 行得通吗?

您可以照常设置道具

<Co name="Name"/>

如果元素是某个组件的子元素,那么您可以使用 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>
        )
    }
}

据我了解,您不想使用 JSX 语法而是使用存储的变量来呈现您的组件。你可以看看React.cloneElement。这应该可以满足您的要求:

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

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