Javascript 正在重置导致React mixin出现问题的状态
在我的React组件中,我使用基于媒体查询应用类。下面是一个简化的示例: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
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);
}