让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 相关文章推荐
DOM下的节点属性和操作小结
May 14 Javascript
jQuery 下拉列表 二级联动插件分享
Mar 29 Javascript
11个用于提高排版水平的基于jquery的文字效果插件
Sep 14 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
Oct 16 Javascript
JavaScript中的异常捕捉介绍
Dec 31 Javascript
JavaScrip常见的一些算法总结
Dec 28 Javascript
JS中input表单隐藏域及其使用方法
Feb 13 Javascript
基于bootstrap实现收缩导航条
Mar 17 Javascript
javascript cookie的基本操作(添加和删除)
Jul 24 Javascript
Vue中如何实现轮播图的示例代码
Jul 27 Javascript
js实现随机8位验证码
Jul 24 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
Jan 28 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
日本十大科幻动漫 宇宙骑士垫底,第一已成经典
2020/03/04 日漫
php图像处理函数大全(推荐收藏)
2013/07/11 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
2020/10/28 PHP
JavaScipt基本教程之前言
2008/01/16 Javascript
关于IE BUG与字符串截取substr的解决办法
2013/04/10 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
2014/05/29 Javascript
JavaScript数组去重的3种方法和代码实例
2015/07/01 Javascript
解析预加载显示图片艺术
2016/12/05 Javascript
jquery获取下拉框中的循环值
2017/02/08 Javascript
JavaScript无阻塞加载和defer、async详解
2017/02/26 Javascript
详解Vue2+Echarts实现多种图表数据可视化Dashboard(附源码)
2017/03/21 Javascript
使用JavaScript实现表格编辑器(实例讲解)
2017/08/02 Javascript
深入理解Promise.all
2018/08/08 Javascript
详解vue 数组和对象渲染问题
2018/09/21 Javascript
基于vue实现移动端圆形旋钮插件效果
2018/11/28 Javascript
在Vue mounted方法中使用data变量详解
2019/11/05 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
JS forEach跳出循环2种实现方法
2020/06/24 Javascript
vue实现顶部菜单栏
2020/11/08 Javascript
微信小程序实现分页加载效果
2020/11/19 Javascript
python 自动化将markdown文件转成html文件的方法
2016/09/23 Python
Python 闭包的使用方法
2017/09/07 Python
django反向解析和正向解析的方式
2018/06/05 Python
python2.7 安装pip的方法步骤(管用)
2019/05/05 Python
pytorch实现onehot编码转为普通label标签
2020/01/02 Python
什么是python类属性
2020/06/10 Python
使用javascript和HTML5 Canvas画的四渐变色播放按钮效果
2014/04/10 HTML / CSS
美国隐形眼镜零售商:LensPure
2019/03/10 全球购物
农业局学习党的群众路线教育实践活动心得体会
2014/03/07 职场文书
送温暖献爱心活动总结
2014/07/08 职场文书
逃课打麻将检讨书
2014/10/05 职场文书
机关干部三严三实心得体会
2014/10/13 职场文书
2015年七夕爱情寄语
2015/03/24 职场文书
交通事故调解协议书
2015/05/20 职场文书
小学班级标语口号大全
2015/12/26 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书