Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正在重置导致React mixin出现问题的状态_Javascript_Reactjs - Fatal编程技术网

Javascript 正在重置导致React mixin出现问题的状态

Javascript 正在重置导致React mixin出现问题的状态,javascript,reactjs,Javascript,Reactjs,在我的React组件中,我使用基于媒体查询应用类。下面是一个简化的示例: R.createClass({ mixins: [MediaMixin], render: function () { var mediaquery = this.state.media; return ( <Component responsive={mediaquery.small}> <input value={this.state.formI

在我的React组件中,我使用基于媒体查询应用类。下面是一个简化的示例:

R.createClass({
  mixins: [MediaMixin],

  render: function () {
    var mediaquery = this.state.media;

    return (
      <Component responsive={mediaquery.small}>
        <input value={this.state.formInput1} >
        <input value={this.state.formInput2} >
        <input value={this.state.formInput3} >
      </Compontent>
    )
  }
});
提交/保存表单或取消表单时,为了重置我们使用的表单:

_cancel: function () {
  this.setState(this.getInitialState());
}
但是,这会导致mixin出现问题,因为它删除了包含mixin的mediaquery的
state
属性

我现在使用的解决方案包括手动重置与表单相关的
状态
属性,如:

_cancel: function () {
  this.setState({
    allowanceType: '',
    allowanceAmount: '',
    allowanceDocument: null
  });
}

问题-如何重置
状态
并保留mixin
状态
属性(无需手动重置每个表单
状态
属性)

您可以将组件的初始状态存储在另一个函数中,该函数获取与mixin共享的初始状态

比如:


您可以将组件的初始状态存储在另一个函数中,该函数获取与mixin共享的初始状态

比如:

你可以用这个

_cancel: function () {
    var newState = this.getInitialState();
    newState.media = this.state.media;
    this.setState(newState);
}
请记住,您应该将当前状态视为不可变的(仅供参考)。

您可以使用它

_cancel: function () {
    var newState = this.getInitialState();
    newState.media = this.state.media;
    this.setState(newState);
}
请记住,您应该将当前状态视为不可变的(仅供参考)

_cancel: function () {
    var newState = this.getInitialState();
    newState.media = this.state.media;
    this.setState(newState);
}