让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函数内部this指针指向的三种方法
Apr 23 Javascript
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
Jun 27 Javascript
js实现收缩菜单效果实例代码
Oct 30 Javascript
js导出txt示例代码
Jan 14 Javascript
jquery中get和post的简单实例
Feb 04 Javascript
Nginx上传文件全部缓存解决方案
Aug 17 Javascript
jQuery实现浮动层随浏览器滚动条滚动的方法
Sep 22 Javascript
基于Swiper实现移动端页面图片轮播效果
Dec 28 Javascript
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
May 13 Javascript
JS实现的简单tab切换功能完整示例
Jun 20 Javascript
Vue组件跨层级获取组件操作
Jul 27 Javascript
three.js着色器材质的内置变量示例详解
Aug 16 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
4月1日重磅发布!《星际争霸II》6.0.0版本更新
2020/04/09 星际争霸
php readfile下载大文件失败的解决方法
2017/05/22 PHP
PHP常见的几种攻击方式实例小结
2019/04/29 PHP
有趣的javascript数组定义方法
2010/09/10 Javascript
原来Jquery.load的方法可以一直load下去
2011/03/28 Javascript
jquery中的on方法使用介绍
2013/12/29 Javascript
js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
2015/10/25 Javascript
微信小程序实战之自定义模态弹窗(8)
2017/04/18 Javascript
js 概率计算(简单版)
2017/09/12 Javascript
JavaScript递归函数解“汉诺塔”算法代码解析
2018/07/05 Javascript
微信小程序将字符串生成二维码图片的操作方法
2018/07/17 Javascript
深入Vue-Router路由嵌套理解
2018/08/13 Javascript
vue-cli webpack 引入swiper的操作方法
2018/09/15 Javascript
vue自定义指令之面板拖拽的实现
2019/04/14 Javascript
详解Vue项目中实现锚点定位
2019/04/24 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
2019/05/14 Javascript
浅谈vue3中effect与computed的亲密关系
2019/10/10 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
2020/02/07 Javascript
使用原生JS实现滚轮翻页效果的示例代码
2020/05/31 Javascript
vue-router之解决addRoutes使用遇到的坑
2020/07/19 Javascript
vue+canvas实现拼图小游戏
2020/09/18 Javascript
Win7上搭建Cocos2d-x 3.1.1开发环境
2014/07/03 Python
Python中字典和集合学习小结
2017/07/07 Python
Python之list对应元素求和的方法
2018/06/28 Python
python排序函数sort()与sorted()的区别
2018/09/18 Python
python判断列表的连续数字范围并分块的方法
2018/11/16 Python
Python使用reportlab模块生成PDF格式的文档
2019/03/11 Python
利用python list完成最简单的DB连接池方法
2019/08/09 Python
python 常见的排序算法实现汇总
2020/08/21 Python
基于Python正确读取资源文件
2020/09/14 Python
雅萌 (YA-MAN) :日本美容家电领域的龙头企业
2017/05/12 全球购物
应届生幼儿园求职信
2013/11/12 职场文书
《匆匆》教学反思
2014/02/22 职场文书
农村产权制度改革实施方案
2014/03/21 职场文书
React列表栏及购物车组件使用详解
2021/06/28 Javascript
python读取mat文件生成h5文件的实现
2022/07/15 Python