让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+iframe 实现无刷新载入整页的代码
Mar 17 Javascript
Javascript 鼠标移动上去小三角形滑块缓慢跟随效果
Apr 26 Javascript
使用jquery解析XML的方法
Sep 05 Javascript
js构造函数创建对象是否加new问题
Jan 22 Javascript
Vue.js实现数据响应的方法
Aug 13 Javascript
从零开始学习搭建React脚手架项目
Aug 23 Javascript
vue2.0获取鼠标位置的方法
Sep 13 Javascript
vue动态删除从数据库倒入列表的某一条方法
Sep 29 Javascript
layui文件上传控件带更改后数据传值的方法
Sep 23 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
Jun 28 Javascript
jquery实现异步文件上传ajaxfileupload.js
Oct 23 jQuery
解决Antd Table表头加Icon和气泡提示的坑
Nov 17 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-redis中文文档介绍
2013/02/07 PHP
PHP CURL获取cookies模拟登录的方法
2013/11/04 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
PHP+ajax实现获取新闻数据简单示例
2018/05/08 PHP
Input 特殊事件onpopertychange和oninput
2009/06/17 Javascript
JavaScript字符串String和Array操作的有趣方法
2012/12/18 Javascript
『jQuery』取指定url格式及分割函数应用
2013/04/22 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
弹出最简单的模式化遮罩层的js代码
2013/12/04 Javascript
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
Jquery图片延迟加载插件jquery.lazyload.js的使用方法
2014/05/21 Javascript
JavaScript操作DOM元素的childNodes和children区别
2015/04/01 Javascript
javascript实现倒计时(精确到秒)
2015/06/26 Javascript
jQuery生成假加载动画效果
2016/12/01 Javascript
完美解决jQuery 鼠标快速滑过后,会执行多次滑出的问题
2016/12/08 Javascript
使用webpack搭建vue项目及注意事项
2019/06/10 Javascript
node静态服务器实现静态读取文件或文件夹
2019/12/03 Javascript
angularjs模态框的使用代码实例
2019/12/20 Javascript
JavaScript使用canvas绘制随机验证码
2020/02/17 Javascript
Python实现JSON反序列化类对象的示例
2018/01/31 Python
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
2018/02/26 Python
详解flask表单提交的两种方式
2018/07/21 Python
Python发展简史 Python来历
2019/05/14 Python
Python+PyQT5的子线程更新UI界面的实例
2019/06/14 Python
在django view中给form传入参数的例子
2019/07/19 Python
python 判断txt每行内容中是否包含子串并重新写入保存的实例
2020/03/12 Python
用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)
2020/06/04 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
2020/08/04 Python
英国最大线上综合鞋类商城:Office
2017/12/08 全球购物
公司年会演讲稿范文
2014/01/11 职场文书
投资意向书范本
2014/04/01 职场文书
我们的节日春节活动方案
2014/08/22 职场文书
中国式结婚:司仪主持词(范文)
2019/07/25 职场文书
详解SpringBoot异常处理流程及原理
2021/06/21 Java/Android
Golang 切片(Slice)实现增删改查
2022/04/22 Golang
Golang解析JSON对象
2022/04/30 Golang