让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 相关文章推荐
通过修改referer下载文件的方法
May 11 Javascript
JS延时提示框实现方法详解
Nov 26 Javascript
IntersectionObserver API 详解篇
Dec 11 Javascript
Jquery Easyui对话框组件Dialog使用详解(14)
Dec 19 Javascript
vue实现商城购物车功能
Nov 27 Javascript
angular2中使用第三方js库的实例
Feb 26 Javascript
详解解决使用axios发送json后台接收不到的问题
Jun 27 Javascript
jQuery实现菜单的显示和隐藏功能示例
Jul 24 jQuery
在微信小程序中渲染HTML内容的方法示例
Sep 28 Javascript
详解微信小程序调用支付接口支付
Apr 28 Javascript
如何在项目中使用log4.js的方法步骤
Jul 16 Javascript
js实现点击按钮随机生成背景颜色
Sep 05 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 session劫持和防范的方法
2013/11/12 PHP
PHP命名空间(namespace)的动态访问及使用技巧
2014/08/18 PHP
PHP中创建图像并绘制文字的例子
2014/11/19 PHP
php修改上传图片尺寸的方法
2015/04/14 PHP
jQuery 性能优化手册 推荐
2010/02/23 Javascript
在JavaScript中获取请求的URL参数
2010/12/22 Javascript
js新闻滚动 js如何实现新闻滚动效果
2013/01/07 Javascript
JS判断对象是否存在的10种方法总结
2013/12/23 Javascript
JS的参数传递示例介绍
2014/02/08 Javascript
jquery制作弹窗提示窗口代码分享
2014/03/02 Javascript
深入探讨javascript函数式编程
2015/10/11 Javascript
学习JavaScript正则表达式
2015/11/13 Javascript
AngularJS中transclude用法详解
2016/11/03 Javascript
jQuery文字轮播特效
2017/02/12 Javascript
JS按钮闪烁功能的实现代码
2017/07/21 Javascript
微信小程序tabBar模板用法实例分析【附demo源码下载】
2017/11/28 Javascript
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
VSCode搭建Vue项目的方法
2020/04/30 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
2020/08/04 Javascript
Python文件操作类操作实例详解
2014/07/11 Python
在Linux下使用Python的matplotlib绘制数据图的教程
2015/06/11 Python
Python中如何获取类属性的列表
2016/12/26 Python
Python变量和数据类型详解
2017/02/15 Python
python中kmeans聚类实现代码
2018/02/23 Python
Python实现将蓝底照片转化为白底照片功能完整实例
2019/12/13 Python
在python shell中运行python文件的实现
2019/12/21 Python
python实现学生管理系统开发
2020/07/24 Python
python爬虫爬取网页数据并解析数据
2020/09/18 Python
TripAdvisor西班牙官方网站:全球领先的旅游网站
2018/01/10 全球购物
4s店市场专员岗位职责
2014/04/09 职场文书
医院办公室主任岗位职责
2015/04/01 职场文书
参加招聘会后的感想
2015/08/10 职场文书
酒吧七夕情人节宣传语
2015/11/24 职场文书
情况说明书格式及范文
2019/06/24 职场文书
JavaScript 对象创建的3种方法
2021/11/17 Javascript
CSS使用SVG实现动态分布的圆环发散路径动画
2022/12/24 HTML / CSS