让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 相关文章推荐
js的2种继承方式详解
Mar 04 Javascript
jquery+ajax验证不通过也提交表单问题处理
Dec 12 Javascript
使用控制台破解百小度一个月只准改一次名字
Aug 13 Javascript
JS实现很实用的对联广告代码(可自适应高度)
Sep 18 Javascript
jQuery旋转木马式幻灯片轮播特效
Dec 04 Javascript
js在ie下打开对话窗口的方法小结
Oct 24 Javascript
基于zTree树形菜单的使用实例
Dec 25 Javascript
Angular使用动态加载组件方法实现Dialog的示例
May 11 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
Jul 05 Javascript
使用pm2自动化部署node项目的方法步骤
Jan 28 Javascript
Vue.js+cube-ui(Scroll组件)实现类似头条效果的横向滚动导航条
Jun 24 Javascript
vant picker+popup 自定义三级联动案例
Nov 04 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添加MySQL数据记录代码
2008/06/07 PHP
php addslashes 函数详细分析说明
2009/06/23 PHP
三个类概括PHP的五种设计模式
2012/09/05 PHP
php中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
php删除指定目录的方法
2015/04/03 PHP
PHP数组对象与Json转换操作实例分析
2019/10/22 PHP
javascript json 新手入门文档
2009/12/03 Javascript
jquery中获得$.ajax()事件返回的值并添加事件的方法
2010/04/15 Javascript
js 禁用只读文本框获得焦点时的退格键
2010/04/25 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
2013/08/19 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
深入探寻javascript定时器
2015/01/02 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
2016/09/28 Javascript
Javascript中常用的检测方法小结
2016/10/08 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
2017/02/15 Javascript
浅谈nodejs中的类定义和继承的套路
2017/07/26 NodeJs
原生js实现3D轮播图
2020/03/21 Javascript
JS Web Flex弹性盒子模型代码实例
2020/03/10 Javascript
python模块之sys模块和序列化模块(实例讲解)
2017/09/13 Python
Flask数据库迁移简单介绍
2017/10/24 Python
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
2018/02/10 Python
基于pip install django失败时的解决方法
2018/06/12 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/27 Python
Python wxpython模块响应鼠标拖动事件操作示例
2018/08/23 Python
Python Multiprocessing多进程 使用tqdm显示进度条的实现
2019/08/13 Python
HTML5时代CSS设置漂亮字体取代图片
2014/09/04 HTML / CSS
介绍一下XMLHttpRequest对象的常用方法和属性
2013/05/24 面试题
大三学生做职业规划:给未来找个方向
2014/02/24 职场文书
亚运会口号
2014/06/20 职场文书
新婚姻法离婚协议书范文
2014/11/30 职场文书
优秀教育工作者事迹材料
2014/12/24 职场文书
2015年财务科工作总结范文
2015/05/13 职场文书
餐厅营销的秘密:为什么老顾客会流水?
2019/08/08 职场文书
详解Html5项目适配系统深色模式方案总结
2021/04/14 HTML / CSS
python使用pymysql模块操作MySQL
2021/06/16 Python