vue与react的小区别

1:绑定事件event传递区别(没有特殊区别)

通过event获取dom节点
<input ref={(userName) => {
    this.userName = userName
}}  onChange = {this.inputChange} />
react并不需要传递参数
inputChange = (event)=>{
    const target = event.target 
    let value = this.refs.userName.value //通过ref获取dom的值
    this.setState((prevState) => {
        return {
            userName : value
        }
    })
};
如果需要额外传递参数,似乎也需要动态的将event作为参数传递进来

 

通过event获取dom节点
<button @click="handleClick">点击</butoton>
这种也可以获取到dom
<button @click="handleClick($event,123)">点击</button> 需要使用特殊的参数$event,才可以准确的获取到 handleClick: function (e,value) { console.log(this, e, value) },

 

 2:事件系统的区别

react给元素绑定的事件都属于合成事件(可参考什么是合成事件),在速度方面,原生事件会优先与合成事件触发

  vue

  1:v-on指令在普通元素上面使用,属于监听元素的原生事件;在组件上面使用。属于监听子组件的自定义事件

  2:vm.$on监听当前实例的自定义事件

 

 

3:ref的使用区别

  vue

  1:ref用于普通元素上面时,包含的是该dom节点的相关信息;在组件上面使用时,指向的是子组件的实例(是不是给我们多提供了一种组件间通信的方式呢)

  2:ref的具体使用方式似乎只有一种

  react

  1:ref用于普通元素上面时,包含的是该dom节点的相关信息;在组件上面使用时,指向的是子组件的实例(是不是给我们多提供了一种组件间通信的方式呢)

  2:不能再函数组件当中使用ref,因为函数组件没有实例

  3:ref的具体使用方式可参考(react-ref的使用方式)

 

4:状态管理器的简要区别

vuex的Mutation 与redux dispatch(reducer) 笔记记录

1:提交方式的区别
vuex
store.commit('increment', 10) //额外添加参数

使用对象的形式
store.commit('increment', {
  amount: 10
})

使用对象的形式
store.commit({
  type: 'increment',
  amount: 10
}) //我更倾向于这种方式 与dispatch(action)一致

2:使用常量代替Mutation 事件类型
// mutation-types.js
export const SOME_MUTATION = 'SOME_MUTATION'

store.commit({
  type: SOME_MUTATION,
  amount: 10
})

总结:redux确实也喜欢将常量定义在常量文件中;

3:Mutation 必须是同步函数
reducer要求的是纯函数,两者的目的是一致的

4:在组件中提交 Mutation

vuex借助mapMutations 函数,将组件中的 methods 映射为 store.commit 调用

react-redux 提供connect函数,将方法映射到props属性上面

5:action
Action 提交的是 mutation,而不是直接变更状态。
Action 可以包含任意异步操作

总结:vuex异步数据存放在action中,直接请求;redux需要借助中间件的形式

6:Module
const moduleA = {
  state: { ... },
  mutations: { ... },
  actions: { ... },
  getters: { ... }
}

const moduleB = {
  state: { ... },
  mutations: { ... },
  actions: { ... }
}

const store = new Vuex.Store({
  modules: {
    a: moduleA,
    b: moduleB
  }
}

redux的写法
export  default combineReducers({
    appReducer,
    headerReducer,
    todoListReducer
})

 

5:vuex 与 redux的核心原则

Redux 遵循三个基本原则:

单一数据来源: 整个应用程序的状态存储在单个对象树中。单状态树可以更容易地跟踪随时间的变化并调试或检查应用程序。
状态是只读的: 改变状态的唯一方法是发出一个动作,一个描述发生的事情的对象。这可以确保视图和网络请求都不会直接写入状态。
使用纯函数进行更改: 要指定状态树如何通过操作进行转换,您可以编写reducers。Reducers 只是纯函数,它将先前的状态和操作作为参数,并返回下一个状态

vuex 应用构建的原则是什么

集中在 store 中的应用级 state。
只有通过提交一个 mutations 这样一个同步的事务来改变 state。
同步的逻辑应该封装在 mutations 中并能够被 actions 操作。

总结:大同小异

 

 

 

 

 

 

 

 

 

posted @ 2019-11-07 21:10  初心不负  阅读(393)  评论(0编辑  收藏  举报