让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 相关文章推荐
jquery实现效果比较好的table选中行颜色
Mar 25 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
Mar 28 Javascript
jQuery插件实现控制网页元素动态居中显示
Mar 24 Javascript
JavaScript实现的背景自动变色代码
Oct 17 Javascript
node.js版本管理工具n无效的原理和解决方法
Nov 24 Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
Mar 15 Javascript
Vue学习之路之登录注册实例代码
Jul 06 Javascript
Jquery实现无缝向上循环滚动列表的特效
Feb 13 jQuery
Vue.js实现备忘录功能
Jun 26 Javascript
JavaScript实现轮播图特效
Apr 10 Javascript
详解Vue+elementUI build打包部署后字体图标丢失问题
Jul 13 Javascript
五句话帮你轻松搞定js原型链
Dec 09 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中spl_autoload_register()和__autoload()区别分析
2014/05/10 PHP
PHP中字符与字节的区别及字符串与字节转换示例
2016/10/15 PHP
php curl常用的5个经典例子
2017/01/20 PHP
PHP isset()与empty()的使用区别详解
2017/02/10 PHP
wordpress之js库集合研究介绍
2007/08/17 Javascript
javascript 有趣而诡异的数组
2009/04/06 Javascript
Mootools 1.2 手风琴(Accordion)教程
2009/09/15 Javascript
Javascript递归打印Document层次关系实例分析
2015/05/15 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
2015/10/01 Javascript
Bootstrap每天必学之警告框插件
2016/04/26 Javascript
JS创建事件的三种方法(实例代码)
2016/05/12 Javascript
AngularJS 指令详细介绍
2016/07/27 Javascript
bootstrapValidator bootstrap-select验证不可用的解决办法
2017/01/11 Javascript
ES10 特性的完整指南小结
2019/03/04 Javascript
Nodejs异步流程框架async的方法
2019/06/07 NodeJs
Echarts地图添加引导线效果(labelLine)
2019/09/30 Javascript
node.JS事件机制与events事件模块的使用方法详解
2020/02/06 Javascript
vue中的双向数据绑定原理与常见操作技巧详解
2020/03/16 Javascript
JS算法教程之字符串去重与字符串反转
2020/12/15 Javascript
Python基础语言学习笔记总结(精华)
2017/11/14 Python
Python学习小技巧总结
2018/06/10 Python
Python实现矩阵相乘的三种方法小结
2018/07/26 Python
python语言是免费还是收费的?
2020/06/15 Python
Python读写压缩文件的方法
2020/07/30 Python
Python2与Python3关于字符串编码处理的差别总结
2020/09/07 Python
详解python的xlwings库读写excel操作总结
2021/02/26 Python
canvas 阴影和图形变换的示例代码
2018/01/02 HTML / CSS
日本最大的眼镜购物网站:Oh My Glasses
2016/11/13 全球购物
Myprotein法国官网:欧洲第一运动营养品牌
2019/03/26 全球购物
冰淇淋店的创业计划书
2014/02/07 职场文书
高考标语大全
2014/06/05 职场文书
党支部三严三实对照检查材料思想汇报
2014/09/29 职场文书
王兆力在市委党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
学校群众路线专项整治方案
2014/10/31 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书
七年级作文之秋游
2019/10/21 职场文书