React中怎样实现双向数据绑定?

import React, {Component} from \u0026#39;react\u0026#39;class Hello extends Component { constructor(props) { super(props) this.state = { value: \u0026#39;\u0026#39; } } handleInput = _event =\u0026gt; { let event = _event let elem = event.target let value = https://www.zhihu.com/api/v4/questions/42879223/elem.value if(elem.attributes.twoWay != null){ let attr = elem.attributes.twoWay.value this.setState(state =/u0026gt; state = value) } } render() { return ( /u0026lt;div/u0026gt; /u0026lt;input onInput={this.handleInput} is twoWay={/u0026#39;value/u0026#39;} /u0026gt; /u0026lt;p/u0026gt;{this.state.value}/u0026lt;/p/u0026gt; /u0026lt;/div/u0026gt; ) }}export default Hello;我们把state这个名字换一下:
import React, {Component} from \u0026#39;react\u0026#39;class Hello extends Component { constructor(props) { super(props) this.viewModel = { value: \u0026#39;\u0026#39; } } handleInput = _event =\u0026gt; { let event = _event let elem = event.target let value = https://www.zhihu.com/api/v4/questions/42879223/elem.value if(elem.attributes.twoWay != null){ let attr = elem.dataset.twoway.value this.setViewModel(viewModel =/u0026gt; viewModel = value) } } render() { return ( /u0026lt;div/u0026gt; /u0026lt;input onInput={this.handleInput} data-twoway="value" /\u0026gt; \u0026lt;p\u0026gt;{this.state.value}\u0026lt;/p\u0026gt; \u0026lt;/div\u0026gt; ) }}export default Hello;而常见的MVVM是这么实现的:
let vm = { _data: "", get data() { return this._data }, set data(value) { this._data = https://www.zhihu.com/api/v4/questions/42879223/value notify() // 通知View层更新数据 }}MVVM双向绑定工业界用了十年,现在跳出来一群人说双向绑定不好,状态容易乱,我们要单向数据流云云,然后大喊xx才双向绑定
且不说这些人明白不明白MVVM的精髓,MVVM双向绑定的重量级应用比这些人打过的嘴炮都多,到底谁才是xx?

■网友
不建议如果坚持,请看Two-Way Binding Helpers
■网友
可以试试 Mota,它能给 React 带来类似 ng、vue 的双向绑定的能力
侯锋:在 React 工程中利用 Mota 编写面向对象的业务模型 【React中怎样实现双向数据绑定?】

■网友
http://reactjs.cn/react/docs/thinking-in-react.html最后面的添加反向数据流


    推荐阅读