ReactJS - ES6类 - 使用增强属性调用super()

时间:2016-02-16 16:02:42

标签: reactjs ecmascript-6

这就是我想做的事情:

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);
  };
  ...
};

1 个答案:

答案 0 :(得分:2)

您应该能够执行以下操作:

constructor(props, store) {
  super({...props, store});
}

如果您处于对象传播运算符({...props}构造)不可用的环境中,则可以使用Object.assign

constructor(props, store) {
  super(Object.assign({}, props, {store});
}

但是,如果这是React组件的构造函数,请注意React.Component的构造函数的第二个参数是context,并且您将无法获得您正在寻找的行为