我可以在React中使用非纯对象作为状态吗?

时间:2016-03-17 07:44:00

标签: reactjs

我想使用函数实例,而不是纯对象,作为反应中的状态对象。但我不确定这是否可以:

class Test extends Component {
  constructor(props) {
    super(props);
    this.state = new Domain();
  }
}

2 个答案:

答案 0 :(得分:2)

只要typeof new Domain() == 'object'它就没事了。

你必须记住(并且可能是帐户)的是,如果实例自我更新,React将不会知道它。

this.state的所有更改都必须通过setState界面,Domain函数可能不知道。

this.state = new Domain();

// this won't cause your component to re-render
this.state.update(10);

// and this is an anti-pattern
this.setState(this.state);

监听对象的更改非常困难,如果您的域对象具有修改其状态的实例方法,您可能会发现它很难与组件保持同步。

答案 1 :(得分:0)

是的,没关系。

javascript中没有纯粹或非纯粹的对象(有纯函数)。有different notations可以用来创建一个javascript对象。

其中一个是'Function constructor',它是你在new Domain()中使用的那个,另一个常见的是对象文字符号{}

React只是期望一个对象而他并不关心你用来创建它的符号。