监听数据变化的实现原理不同
- Vue 通过 getter/setter 以及一些函数的劫持,能精确知道数据变化,不需要特别的优化就能达到很好的性能
- React 默认是通过比较引用的方式进行的,如果不优化(PureComponent/shouldComponentUpdate)可能导致大量不必要的VDOM的重新渲染
数据流的不同
大家都知道,Vue中默认是支持双向绑定的,在Vue2.x中 组件与DOM之间可以通过v-model来进行双向绑定,然而 React 从诞生之初就不支持双向绑定,React一直提倡的是单向数据流,他称之为 onChange/setState()模式。
不过由于我们一般都会用 Vuex 以及 Redux 等单向数据流的状态管理框架,因此很多时候我们感受不到这一点的区别了。
组件通信的区别
在Vue 中有三种方式可以实现组件通信:
- 父组件通过 props 向子组件传递数据或者回调,虽然可以传递回调,但是我们一般只传数据,而通过 事件的机制来处理子组件向父组件的通信
- 子组件通过 事件 向父组件发送消息
- 通过 V2.2.0 中新增的 provide/inject 来实现父组件向子组件注入数据,可以跨越多个层级。
另外有一些比如访问 children等比较dirty的方式这里就不讲了。
在 React 中:
- 父组件通过 props 可以向子组件传递数据或者回调
- 可以通过 context 进行跨层级的通信,这其实和 provide/inject 起到的作用差不多。
可以看到,React 本身并不支持自定义事件,Vue中子组件向父组件传递消息有两种方式:事件和回调函数,而且Vue更倾向于使用事件。但是在 React 中我们都是使用回调函数的,这可能是他们二者最大的区别。
模板渲染方式的不同
- React 是通过JSX渲染模板
- Vue是通过一种拓展的HTML语法进行渲染
以上只是比较明显的区别阐述,当然还有更多的不同之处 参考来自 juejin.cn/post/684490…