这就是我想做的事情:
constructor(props, store) {
props.store = store;
super(props);
};
我收到以下错误:
未捕获的TypeError:无法添加属性存储,对象不可扩展
我知道属性在ReactJS中是不可变的。那么如何克隆,然后扩充现有的属性?
更新1
一些背景:我基本上试图避免this._store
"私人"变量,宁愿在props
中使用它,因为该值在对象创建时是已知的,不会改变。
我的班级层次结构如下:
import SpeakersStore from ...;
class SpeakersViewController extends ItemsViewController {
constructor(props) {
super(props, SpeakersStore);
};
...
};
class ItemsViewController extends React.Component {
constructor(props, store) {
props.store = store;
super(props);
};
...
};
答案 0 :(得分:2)
您应该能够执行以下操作:
constructor(props, store) {
super({...props, store});
}
如果您处于对象传播运算符({...props}
构造)不可用的环境中,则可以使用Object.assign
:
constructor(props, store) {
super(Object.assign({}, props, {store});
}
但是,如果这是React组件的构造函数,请注意React.Component
的构造函数的第二个参数是context
,并且您将无法获得您正在寻找的行为