双向绑定?虚拟 DOM? - 知乎提问
一直觉得这两个框架的根本区别是 api 设计的理念。
vue 更倾向于某件事情大部分场景下都是需要重复做的,ok,我来帮你做,你只需要做剩余的部分;react 更倾向于给你提供最基础的功能,重复的事情你自己来组合吧。
例子:
“双向绑定“
vue 2.x 之后,即使不再提倡真正意义的双向绑定,但对于输入类的组件,大部分场景的的确确就是需要的。于是基于特殊 prop 和 单向的事件通知机制依然保留了 v-model 这个双向绑定的语法糖;
而 react 你始终只能选择 :value + onChange。
事件处理
vue 的 @click 除了可以用一个具名函数来赋值还可以直接这样:
1 | @click="counter += 1" |
依然是基于大部分事件处理的场景让调用者做最少的事情:事件处理大部分情况就是简单改个响应值,复杂点也就是调用一个需要传参的函数。( vue 还为你给模版语法里的变量自动绑定了 this
而 react 如果不考虑绑定一个具名函数的话,你只能这样:
1 | onClick = { () => this.setState({ counter: this.state.counter + 1 }) } |
好了,那么其实对比到这里,其实就是理念的区别:
我不喜欢写很多范式的,冗余的代码,所以我喜欢 vue;你喜欢纯粹的 api,确定的调用方式,所以你喜欢 react,甚至觉得 vue 的 api 设计有点精分(逃。