让Vue也可以使用Redux的方法


Posted in Javascript onMay 23, 2018

上周末看Vuex源码,突发灵感,为什么都是Vuex啊。

于是蛋疼一下午写了一个插件来帮助Vue可以使用Redux

Gayhub Url

Vue-with-Redux

这是一个用于帮助Vue使用Redux管理状态的插件。Redux是一个非常流行的状态管理工具。vue-with-redux为大家提供一个可以在Vue环境下使用Redux的途径。这回带来不同的开发体验。

开始

首先你需要通过如下命令安装vue-with-redux

npm install -save vue-with-redux

运行Demo

git clone https://github.com/ryouaki/vue-with-redux.git
 npm install
 npm run serve

Usage

需要像下面这样改造你的入口文件:

// 有可能是你的entry.js文件
 ... // 这里是你引入的其它包
 import VuexRedux from 'vue-with-redux';
 import { makeReduxStore } from 'vue-with-redux';
 import reduces from 'YOUR-REDUCERS';
 import middlewares from 'REDUX-MIDDLEWARES';

 Vue.use(VuexRedux);

 let store = makeReduxStore(reduces, [middlewares]);

 new Vue({
 store,
 render: h => h(App)
 }).$mount('#app')

下面是一个actionCreate函数:

export function test() {
 return {
  type: 'TEST'
 }
 }

 export function asyncTest() {
 return (dispatch, getState) => {
  setTimeout( () => {
  console.log('New:', getState());
  dispatch({type: 'TEST'});
  console.log('Old', getState());
  }, 100);
 }
 }

Note: 你并不需要使用redux-thunk,因为Vue-with-Redux已经提供了对异步处理的支持.

这是一个reducer的例子:

function reduce (state = { count: 0 }, action) {
 switch(action.type) {
  case 'TEST':
  state.count++;
  return state;
  default:
  return state;
 }
 }

 export default {
 reduce
 };

Vue的组件例子:

<template>
 <div>
  <button @click="clickHandler1">Action Object</button>
  <button @click="clickHandler2">Sync Action</button>
  <button @click="clickHandler3">Async Action</button>
  <p>{{reduce.count}}</p>
 </div>
 </template>

 <script>
 import { test, asyncTest } from './../actions';

 export default {
 name: 'HelloWorld',
 props: {
  msg: String
 },
 // 你必须在这里预先定义你订阅的Redux中的状态。否则编译模版会报错。
 data() {
  return {
  reduce: {}
  }
 },
 methods: {
  clickHandler1() {
  this.dispatch({type: 'TEST'});
  },
  clickHandler2() {
  this.dispatch(test());
  },
  clickHandler3() {
  this.dispatch(asyncTest());
  },
  // 你必须实现一个mapReduxState函数,用于告诉Vue-with-Redux你需要订阅哪些redux中的状态
  // [ state ] 参数就是redux状态树的根。
  mapReduxState(state) { 
  return {
   reduce: state.reduce
  }
  },
 }
 }
 </script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(1)
Dec 23 Javascript
JS代码优化技巧之通俗版(减少js体积)
Dec 23 Javascript
jquery实现具有收缩功能的垂直导航菜单
Feb 16 Javascript
基于javascript实现简单的抽奖系统
Apr 15 Javascript
js编写当天简单日历效果【实现代码】
May 03 Javascript
通过正则表达式获取url中参数的简单实现
Jun 07 Javascript
最细致的vue.js基础语法 值得收藏!
Nov 03 Javascript
bootstrap——bootstrapTable实现隐藏列的示例
Jan 14 Javascript
微信小程序开发animation心跳动画效果
Aug 16 Javascript
angular4 共享服务在多个组件中数据通信的示例
Mar 30 Javascript
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
Jan 18 jQuery
js打开word文档预览操作示例【不是下载】
May 23 Javascript
微信小程序排坑指南详解
May 23 #Javascript
关于vue-router的那些事儿
May 23 #Javascript
基于Vue自定义指令实现按钮级权限控制思路详解
May 23 #Javascript
详解React+Koa实现服务端渲染(SSR)
May 23 #Javascript
JavaScript+H5实现微信摇一摇功能
May 23 #Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
May 23 #Javascript
vue动态路由配置及路由传参的方式
May 23 #Javascript
You might like
php递归获取目录内文件(包含子目录)封装类分享
2013/12/25 PHP
异步加载script的代码
2011/01/12 Javascript
javascript 运算数的求值顺序
2011/08/23 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
2014/05/23 Javascript
javascript刷新父页面的各种方法汇总
2014/09/03 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
jquery实现点击展开列表同时隐藏其他列表
2015/08/10 Javascript
JS实现自动切换文字的导航效果代码
2015/08/27 Javascript
jQuery中serializeArray()与serialize()的区别实例分析
2015/12/09 Javascript
javascript实现网站加入收藏功能
2015/12/16 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
2016/02/19 Javascript
Validform表单验证总结篇
2016/10/31 Javascript
javascript判断firebug是否开启的方法
2016/11/23 Javascript
微信小程序开发(一) 微信登录流程详解
2017/01/11 Javascript
完美解决手机网页中输入框被输入法遮挡的问题
2017/12/19 Javascript
微信小程序实现手指触摸画板
2018/07/09 Javascript
详解React之key的使用和实践
2018/09/29 Javascript
node上的redis调用优化示例详解
2018/10/30 Javascript
浅谈KOA2 Restful方式路由初探
2019/03/14 Javascript
微信小程序自定义头部导航栏(组件化)
2019/11/15 Javascript
Vuex中的Mutations的具体使用方法
2020/06/01 Javascript
[45:38]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第一局
2016/03/02 DOTA
[00:32]2018DOTA2亚洲邀请赛Mineski出场
2018/04/04 DOTA
python 输入一个数n,求n个数求乘或求和的实例
2018/11/13 Python
基于Python在MacOS上安装robotframework-ride
2018/12/28 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
2020/02/27 Python
python中sympy库求常微分方程的用法
2020/04/28 Python
美国皮靴公司自1863年:The Frye Company
2016/11/30 全球购物
职称自我鉴定
2013/10/15 职场文书
产品促销活动策划书
2014/01/15 职场文书
流动人口婚育证明范本
2014/09/26 职场文书
法定代表人身份证明书(含说明)
2014/10/02 职场文书
客服专员岗位职责
2015/02/10 职场文书
2015年工商所工作总结
2015/05/21 职场文书
雨中的树观后感
2015/06/03 职场文书
Valheim服务器 Mod修改安装教程 【ValheimPlus】
2022/12/24 Servers