与其他框架的双向数据绑定相比,React具有单向数据流的概念,例如Vue.js. 我已经制作了以下片段来感知本质上的差异,然后似乎单向要求应用程序传播任何状态转换,而双向传统上为你做.
我已经制作了以下片段来感知本质上的差异,然后似乎单向要求应用程序传播任何状态转换,而双向传统上为你做.
希望我可能在这里误解了这个要点,你能帮助澄清两人之间根本不同的东西吗?
var MyComponent = React.createClass({ getInitialState: function () { return { one: 'Hello', two: 'world', three: '' } }, handleValueOneChange: function (e) { this.setState({one: e.target.value}) }, handleValueTwoChange: function (e) { this.setState({two: e.target.value}) }, render: function () { return ( <div> <h1> {this.state.one + ' ' + this.state.two} </h1> <input value={this.state.one} onChange={this.handleValueOneChange} /> <input value={this.state.two} onChange={this.handleValueTwoChange} /> </div> ) } }) ReactDOM.render( <MyComponent />, document.getElementById('app') )
<script src="http://img.558idc.com/uploadfile/allimg/210615/1PH25922-0.jpg"></script> <script src="http://img.558idc.com/uploadfile/allimg/210615/1PH21H1-1.jpg"></script> <div id="app"/>
new Vue({ el: '#app', data: { one: 'Hello', two: 'world' }, computed: { three: function() { return this.one + ' ' + this.two } } })
<script src="http://img.558idc.com/uploadfile/allimg/210615/1PH242b-2.jpg"></script> <div id="app"> <h1>{{ three }}</h1> <input v-model="one" /> <input v-model="two" /> </div>那是对的.我不熟悉vue.js,但angular也做了类似的双向数据绑定.现在,React可能在您需要时看起来太乏味,因为您需要编写所有额外的代码(至少感觉就像这样).
但我注意到大多数页面和你编写的大多数html组件都不需要双向数据绑定.它们对于基于表单的元素至关重要,而且主要是它.而且大多数页面都不是基于表单的.我认为角度团队已经意识到这个事实以及它对应用程序性能的影响程度,因此他们引入了从1.3版本开始的单向数据绑定的构造.
因此,总体而言,这取决于您要做的事情并选择最佳解决方案.例如,你可能正在编写一个完全基于表单的应用程序(我用这种方式编写了一个拥抱应用程序),双向数据绑定将是非常有用的.但大多数其他人,单向足够好.
以下是您可能感兴趣的其他SO帖子:
Can anyone explain the difference between Reacts one-way data binding and Angular’s two-way data binding
What is two way binding?