我知道我可以简单地一次性添加属性。 this.state={a:'1','b':2}
。但是,如果我们想向state
对象添加额外的属性,而不仅仅是在constructor
中,或者需要根据条件添加属性,该怎么办?
是否仅应使用固定数量或属性? (我知道dictionary
和arrays
是state
的元素。)
constructor(){
super();
this.state = { item: 'first item' }
this.state = { item2: 'second item' } // Or += append are not accepted.
}
很显然,React state
是JS Object
因此,this.state.item2= 'new item';
有用。
在以下评论中得到Andy Ray
和Mark E
的答复。问题的另一部分:如何动态创建状态
The Reason
并将其标记为已回答
谢谢大家
答案 0 :(得分:1)
您可以具有这样的动态状态:
class DynamicStateBasedOnProps extends React.Component{
constructor(props){
super();
this.state = { static: 'I am static' };
}
componentDidMount(){
const stateBasedOnProps = Object.keys(this.props)
.map(key => ({[key]: this.props[key]}));
this.setState(dynamicState)
}
render() {
return <div>
{JSON.stringify(this.state)}
</div>;
}
}
答案 1 :(得分:1)
您可以通过this.state
在构造函数之外修改this.setState({...})
对象,并且完全可以在其中添加新属性,因为它只是一个JS对象。不过请注意,this.state
的每次修改都会导致render
方法调用。