是否可以动态创建道具的名称?例如:
let dynamicPropName = "someString";
<MyComponent dynamicPropName="some value" />
Run Code Online (Sandbox Code Playgroud)
所以在MyComponent中,this.props.someString存在.
Wit*_*ult 40
如果您使用的是es6,则可以定义动态道具:
let dynamicProps = {"dynamicKey":"someString", "dynamicKey2":"someString"};
Run Code Online (Sandbox Code Playgroud)
要么
let someVariable = "xyz";
dynamicProps[someVariable] = value;
Run Code Online (Sandbox Code Playgroud)
然后使用传播运算符:
<MyComponent {...dynamicProps} />
Run Code Online (Sandbox Code Playgroud)
在MyComponent中 -
let props = {...this.props};
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用Object.keyson props来获取所有动态道具名称.
编辑: 添加了一个示例
class Test extends React.Component {
renderFromProps() {
return Object.keys(this.props)
.map((propKey) =>
<h3>{this.props[propKey]}</h3>
);
}
render() {
return (
<div>
<h1>One way </h1>
<hr/>
<h3>{this.props.name}</h3>
<h3>{this.props.type}</h3>
<h3>{this.props.value}</h3>
<hr/>
<h1> Another way </h1>
<hr/>
{ this.renderFromProps()}
</div>
);
}
}
const dynamicProps = { name:"Test", type:"String", value:"Hi" };
ReactDOM.render(
<Test {...dynamicProps} />,
document.getElementById('root')
);Run Code Online (Sandbox Code Playgroud)
<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="root">
</div>Run Code Online (Sandbox Code Playgroud)
Est*_*ask 17
使用带有spread属性和计算属性名称的 JSX语法可以做到这一点:
<MyComponent {...{ [dynamicPropName]: "some value" }} />
Run Code Online (Sandbox Code Playgroud)
内联方式(非常丑陋且不推荐)使用表达式来定义object:
<input {...(el.required ? {required: true} : {})}>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18364 次 |
| 最近记录: |