And*_*sko 4 javascript reactjs immutable.js
我在组件中有以下代码:
constructor() {
this.state = Immutable.fromJS({
user : {
wasChanged : false,
firstName : false,
lastName : false,
address : {
street : false,
}
}
});
}
onEdit({target: {dataset: {target}}}, value) {
this.setState(function (prevState) {
return prevState.setIn(['user', target], value);
});
}
render() {
var user = this.state.get('user').toJS();
...
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我尝试更新onEdit中的值时,我发现prevState具有不同的原型集.我不明白为什么或我做错了什么.我在控制台看到这个
> Object.getPrototypeOf(this.state)
src_Map__Map {@@__IMMUTABLE_MAP__@@: true}
> Object.getPrototypeOf(prevState)
Object {}
Run Code Online (Sandbox Code Playgroud)
在状态被更改后,它将进行渲染,当然它无法从Immutable中找到get函数或任何内容
使用与插件的反应0.13.3.
把它作为国家的关键.
this.state = {
data: Immutable...
};
Run Code Online (Sandbox Code Playgroud)
目前你不能将Immutable对象用作状态的原因与你不能做的原因相同this.state = 7:它不是一个普通的JavaScript对象.
操作大致如下:
React.Component.prototype.setState = (changes) => {
batchUpdate(() => {
// copies own properties from state to the new object
// and then own properties from changes to the new object
var nextState = Object.assign({}, state, changes);
this.componentWillUpdate(...);
this.state = nextState;
queueDomUpdateStuff(this.render(), () => this.componentDidUpdate());
});
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1991 次 |
| 最近记录: |