> 原文出处:http://blog.oyanglul.us/javascript/react-cookbook-mini.html
解释这个问题我们需要先看什么是双向绑定,什么是单向绑定
![](https://box.kancloud.cn/2015-11-21_564fe2d99bfb1.gif)
## 1.1 双向绑定
也就是dom 上的 value 与 controller 或者 view controller 上的绑定,值保持一致。
## 1.2 单向绑定
dom 上的值来源于 controller,但是 dom 上的值改变不会改变 controller 上的值。
##1.3 双向有什么不好
* perfomance
* 我们真的需要吗?实际上有多少值是真的需要双向绑的
* 到底谁动了我的值?too many sources of truth
## 1.4 单向有什么好
* 只有一个 source of truth, 代码好 reason about
* 更快
* 需要的时候自己绑一把,也并不是多麻烦的事
~~~
var TwoWayBindingInput = React.createClass({
getInitialState: function() {
return {message: 'Hello!'};
},
handleChange: function(event) {
this.setState({message: event.target.value}); // <= (setstate)
},
render: function() {
var message = this.state.message;
return <input type="text" value={message} onChange={this.handleChange} />; // <= (value)
}
});
~~~
> 注意看这个双向绑定,[第value行](http://blog.oyanglul.us/javascript/react-cookbook-mini.html#coderef-value) 是单向绑定值 `message` 到 `input` 元素上,[第setstate行](http://blog.oyanglul.us/javascript/react-cookbook-mini.html#coderef-setstate)是把 `input` 元素的值绑定回来,但是 **注意看** 这里绑定回来需要通过 `setState` 来完成,这就保证了 React Component 的 source of truth 还是只有 state。
- 1. Why not 2 way binding/为毛不用双向绑定
- 2. What's Virtual DOM, why should we care / 为毛要用 Vitual Dom
- 3. Why Immutable / 为毛要不可变
- 4. How to do Unit test React project / 如何单元测试
- 5. Modular and Components
- 6. How should I thinking in react way / 如何以 React 的方式解决问题
- 7. What about Data Fetching / 只有 V 的话,数据 M 呢
- 8. What about Router / router 怎么办
- 9. How to communicate between two components that don't have a parent-child relationship/ 不是父子关系的 component 怎么交互
- 10. When should I use "key" / 什么时候该用 key
- 11. What's these Warnings / 这些黄黄的是神马
- 12. How to Profile Component Perfomance / 如何提升效率