vuex与redux的主要区别:

redux:生成的全局数据流是通过每个组件的props逐层传递到各个子组件的,通过@connect装饰器绑定在this.props上面。

vuex :生成的全局数据则是通过getter集成到了框架内部,每个全局属性并非逐层传递到子组件,而是通过数据绑定的方式直接连接到各个子组件,数据及方法都是绑定在组件this上面。

react项目使用react-redux相关依赖;(create-react-app);

cnpm  install  redux  react-redux  redux-actions  redux-thunk   --save

redux-actions 用来创建规范化的action,简化reducer操作  官方api文档  https://www.npmjs.com/package/redux-actions

redux-thunk 实现redux异步操作   官方api文档  https://www.npmjs.com/package/redux-thunk

vue项目使用vuex相关依赖; (vue-cli)

cnpm install vuex --save

下面就redux 与 vuex 单个模块的state代码贴出

redux:

import { createAction, handleActions } from 'redux-actions'
import { getUserInfo } from '../api/getData.js' export const saveUserInfo = createAction('SAVEUSERINFO')
export const addNum = createAction('ADDNUM') export const test = handleActions({
[saveUserInfo]: (state, action) => {
return {
...state,
userInfo: action.payload,
}
},
[addNum]: (state, action) => ({
...state,
num: state.num + 1,
})
}, {
num: 1,
userInfo:{
user:"zq",
_id:""
}
}); export function getUserInfoAction() {
return dispatch => {
getUserInfo().then(res => {
if (res.data.code === 0) {
dispatch(saveUserInfo(res.data.data))
}
})
} }

vuex

import { getUserInfo } from '@/api/getData'

export const moduleA = {
// namespaced: true,
state: {
userInfo: { user: "zq", _id: "" },
num: 10
},
mutations: {
saveUserInfo(state, action) {
state.userInfo = action
},
addNum(state, action) {
state.num++
}
},
getters: {
num(state) {
return state.num += 100
}
},
actions: {
async getUserInfoAction({ commit }) {
try {
let res = await getUserInfo()
if (res.data.code === 0) {
commit('saveUserInfo', res.data.data)
}
} catch (err) {
console.log(err)
}
}
} }

redux完整demo 地址:https://github.com/zhuzeliang/react-node-demo

vuex完整demo  地址:https://github.com/zhuzeliang/vue-node-demo

vuex与redux,我们都一样的更多相关文章

  1. vuex 与 redux 的 区别

    一:redux和flux的区别 1)redux是flux中的一个实现 2))在redux中我们只能定义一个store,在flux中我们可以定义多个 3)在redux中,store和dispatch都放 ...

  2. 37行代码构建无状态组件通信工具-让恼人的Vuex和Redux滚蛋吧!

    状态管理的现状 很多前端开发者认为,Vuex和Redux是用来解决组件间状态通信问题的,所以大部分人仅仅是用于达到状态共享的目的.但是通常Redux是用于解决工程性问题的,用于分离业务与视图,让结构更 ...

  3. vuex、redux、mobx 对比

    出处:https://www.w3cplus.com/javascript/talk-about-front-end-state-management.html 其实大部分概念都差不多,只不过VUEX ...

  4. 状态管理工具对比vuex、redux、flux

    1.为什么要使用状态管路工具  在跨层级的组件之间传递信息,尤其是复杂的组件会非常困难.也不利于开发和维护,这时我们就a需要用到状态管理工具.     2.Flux

  5. flux,redux,vuex状态集管理工具之间的区别

    一:redux和flux的区别 1)redux是flux中的一个实现 2))在redux中我们只能定义一个store,在flux中我们可以定义多个 3)在redux中,store和dispatch都放 ...

  6. Redux/Mobx/Akita/Vuex对比 - 选择更适合低代码场景的状态管理方案

    近期准备开发一个数据分析 SDK,定位是作为数据中台向外输出数据分析能力的载体,前端的功能表现类似低代码平台的各种拖拉拽.作为中台能力的载体,SDK 未来很大概率会需要支持多种视图层框架,比如Vue2 ...

  7. 初识vuex

    1.简介 vuex是 vue官方推荐的一个状态管理器.当我们遇到很多状态改变时,组件之间的通信就会变得复杂,这时候vuex的强大就展现出来. 我们从vuex的原理以及vuex的api两个部分介绍vue ...

  8. vue总结 08状态管理vuex

      状态管理 类 Flux 状态管理的官方实现 由于状态零散地分布在许多组件和组件之间的交互中,大型应用复杂度也经常逐渐增长.为了解决这个问题,Vue 提供 vuex:我们有受到 Elm 启发的状态管 ...

  9. Vuex实践

    本文来自网易云社区 作者:刘凌阳 前言 2017年对于Vue注定是不平凡的一年.凭借着自身简介.轻量.快速等特点,Vue俨然成为最火的前端MVVM开发框架.随着Vue2.0的release,越来越多的 ...

随机推荐

  1. 2011:Audio Classification (Train/Test) Tasks - MIREX Wiki

    Contents [hide] 1 Audio Classification (Test/Train) tasks 1.1 Description 1.1.1 Task specific mailin ...

  2. android菜鸟之路-事件分发机制总结(二)

    ViewGroup事件分发机制 自己定义一个LinearLayout,ImageView和Button,小二,上代码 <LinearLayout xmlns:android="http ...

  3. Python爬虫开发【第1篇】【Requests】

    1.安装 利用 pip 安装 或者利用 easy_install 都可以完成安装: pip install requests easy_install requests 2.基本GET请求(heade ...

  4. 【bzoj1269】[AHOI2006]文本编辑器editor

    在bzoj上乱翻,发现了可持久化并查集,然后baidu了一下,发现一种叫rope的东西.   !!!真的太爽了!!!   直接上代码,感受一下(也是蒯来的).       由于rope的底层实现,in ...

  5. SVN导出指定版本差异文件 ***

    当一个项目进入运营维护阶段以后,不会再频繁地更新全部源文件到服务器,这个时间的修改大多是局部的,因此更新文件只需更新修改过的文件,其他 没有修改过的文件就没有必要上载到服务器.但一个稍微上规模的项目文 ...

  6. nodejs常用命令

    npm是一个node包管理和分发工具,已经成为了非官方的发布node模块(包)的标准.有了npm,可以很快的找到特定服务要使用的包,进行下载.安装以及管理已经安装的包. 1.npm install m ...

  7. bzoj 4326: NOIP2015 运输计划【树链剖分+二分+树上差分】

    常数巨大,lg上开o2才能A 首先预处理出运输计划的长度len和lca,然后二分一个长度w,对于长度大于w的运输计划,在树上差分(d[u]+1,d[v]+1,d[lca]-2),然后dfs,找出所有覆 ...

  8. angularjs2 不同组件间的通信

    AngualrJs2官方方法是以@Input,@Output来实现组件间的相互传值,而且组件之间必须父子关系,下面给大家提供一个简单的方法,实现组件间的传值,不仅仅是父子组件,跨模块的组件也可以实现传 ...

  9. 规范化创建一个vs2017 Mvc框架项目

    vs2107 + dapper + MiniUi 标准化分层封装使 3.1 规范化创建一个vs2017 Mvc框架项目 此时创建的项目勾选 添加单元测试. 添加一个类库,主要用于实体类操作,类库名称 ...

  10. [51nod]1678 lyk与gcd(莫比乌斯反演)

    题面 传送门 题解 和这题差不多 //minamoto #include<bits/stdc++.h> #define R register #define pb push_back #d ...