双向绑定?虚拟 DOM? - 知乎提问

一直觉得这两个框架的根本区别是 api 设计的理念。

vue 更倾向于某件事情大部分场景下都是需要重复做的,ok,我来帮你做,你只需要做剩余的部分;react 更倾向于给你提供最基础的功能,重复的事情你自己来组合吧。

例子:

“双向绑定“

vue 2.x 之后,即使不再提倡真正意义的双向绑定,但对于输入类的组件,大部分场景的的确确就是需要的。于是基于特殊 prop 和 单向的事件通知机制依然保留了 v-model 这个双向绑定的语法糖;

而 react 你始终只能选择 :value + onChange。

事件处理

vue 的 @click 除了可以用一个具名函数来赋值还可以直接这样:

1
2
@click="counter += 1"
@click="say('hi')"

依然是基于大部分事件处理的场景让调用者做最少的事情:事件处理大部分情况就是简单改个响应值,复杂点也就是调用一个需要传参的函数。( vue 还为你给模版语法里的变量自动绑定了 this

而 react 如果不考虑绑定一个具名函数的话,你只能这样:

1
2
onClick = { () => this.setState({ counter: this.state.counter + 1 }) }
onClick = {() => this.say('hi')}

好了,那么其实对比到这里,其实就是理念的区别:

我不喜欢写很多范式的,冗余的代码,所以我喜欢 vue;你喜欢纯粹的 api,确定的调用方式,所以你喜欢 react,甚至觉得 vue 的 api 设计有点精分(逃。


 评论