私はそれをやってはならない唯一の理由は、反応の更新ビューを許可することです。 https://facebook.github.io/react/docs/state-and-lifecycle.html#using-state-correctly
しかし、MobX反応は私のためにこれらの汚い仕事をするようです。私はちょうどthis.state
を観測可能とマークする必要があり、すべてが期待通りに機能します。何か欠点はありますか?私はすべての州を巨大な店に捨てるつもりはない。React with MobXを使用して直接状態を変更することはできますか?
コード:あなたはform
代わりのstate
それに名前を付けることができますし、それは気にしないだろう
const {observable, computed} = mobx;
const {observer} = mobxReact;
const {Component} = React;
@observer
class Form extends React.Component{
@observable state = {
username: '',
password: '',
};
constructor(...args) {
super(...args);
this.handleSubmit = this.handleSubmit.bind(this)
}
render() {
return <form onSubmit={this.handleSubmit}>
<label>
Name:
<input type="text" value={this.state.username} onChange={event => this.state.username = event.target.value} />
</label>
<div>username: {this.state.username}</div>
<input type="submit" value="Submit" />
</form>;
}
handleSubmit(event: Event) {
event.preventDefault();
console.log(this.state.username);
}
}
ReactDOM.render(
<div>
<Form />
<mobxDevtools.default />
</div>
, document.getElementById('mount'));
だから、 'setState'はVDOMの差分をスケジュールするよりも、より多くの何もしませんか? – Zen
@ Zenこれは、入力を実際の状態にマージした後に実行されます。 – aitchnyu