暗号先行:该吃药了

学习了react,其实我最想的就是详细分析一波,React跟Vue都有什么区别!!!

Vue与React的区别

  1. 数据方面
    1. Vue我觉得最大的优势就是支持了双向数据绑定,要想改变状态,只需要调用this去更新State;而React是单向数据流,想要更新状态,就必须调用setState方法。
    2. 数据监听的时候,Vue通过了getter/setter以及proxy,defineProperty这些函数去精确地监控数据的变化;React 默认是通过比较引用(diff)进行比较的,要使用优化手段,不然会导致大量Vdom的渲染。
  2. 编码方面
    1. React把html和css写进了js中,构成了JSX的方式,而Vue采用的是template模版的方式,在html中写css,js,我觉得vue的编码方面比较舒服,可是API太多了,我记不住啊,React混着写就很香,不用记那么多东西。
  3. 组件通讯方面
    1. 都可以跨组件通讯,vue跟react 都可以通过props传给下一级,vue通过事件实现子传父,react通过回调函数实现。vue利用provide/inject跨层级通讯,react使用context实现。

Redux 三大原则

redux解决了组件间状态共享的问题,原理是集中式管理,主要有三个核心方法,action,store,reducer,大概的工作流程就是 view 调用 store 的 dispatch 接收 action 传入 store。

1. 单一数据源

整个应用的 state 被储存在一棵 object tree 中,并且这个 object tree 只存在于唯一一个 store中。 感觉调试起来就很方便了,只要改一个地方

2. State 是只读的

只能通过触发action,来改变state,action 是一个用于描述已发生事件的普通对象。这样确保了视图和网络请求都不能直接修改 state,集中化处理。

3. 使用纯函数来执行修改

通过一些纯函数,也就是reducer 来接受state和action,并且返回新的state。

React-Router

感觉用起来给vue-router 差不多,其中比较不一样的就是,react-router需要在路径是说明精确匹配(exact)跟严格匹配(strict)。
还有就是route提供了一些钩子函数,比如

  • onLeave 离开某个路由时
  • onEnter 进入某个路由时

来通知我们路由发生的情况,以便于我们做一些转换间的操作。如果我们在 React Component 组件外,譬如 Reducer 或者 Service 中需要进行路由跳转的时候,我们可以直接使用 history 对象进行手动跳转。