让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表单提交的代码
Sep 13 Javascript
22点关于jquery性能优化的建议
May 28 Javascript
JS实现下拉菜单赋值到文本框的方法
Aug 18 Javascript
js全选按钮的实现方法
Nov 17 Javascript
SublimeText自带格式化代码功能之reindent
Dec 27 Javascript
jQuery如何封装输入框插件
Aug 19 Javascript
创建一般js对象的几种方式
Jan 19 Javascript
vue-resource 拦截器使用详解
Feb 21 Javascript
Bootstrap输入框组件简单实现代码
Mar 06 Javascript
react 父组件与子组件之间的值传递的方法
Sep 14 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
Oct 23 Javascript
微信小程序实现动态显示和隐藏某个控件功能示例
Dec 14 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编实现程动态图像的创建代码
2008/09/28 PHP
PHP利用str_replace防注入的方法
2013/11/10 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
2019/09/03 PHP
laravel利用中间件做防非法登录和权限控制示例
2019/10/21 PHP
分享20多个很棒的jQuery 文件上传插件或教程
2011/09/04 Javascript
jQuery选择器中含有空格的使用示例及注意事项
2013/08/25 Javascript
Jquery实现的角色左右选择特效
2014/05/21 Javascript
javascript 动态创建表格的2种方法总结
2015/03/04 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
JavaScript编写带旋转+线条干扰的验证码脚本实例
2016/05/30 Javascript
Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)
2019/04/17 Javascript
layui前端时间戳转化实例
2019/11/15 Javascript
vue实现鼠标移过出现下拉二级菜单功能
2019/12/12 Javascript
在react中使用vue的状态管理的方法示例
2020/05/02 Javascript
如何在面试中手写出javascript节流和防抖函数
2020/10/22 Javascript
Javascript实现关闭广告效果
2021/01/29 Javascript
[01:30]DOTA2上海特锦赛现场采访 Loda倾情献唱
2016/03/25 DOTA
[44:37]完美世界DOTA2联赛PWL S3 Forest vs access 第一场 12.11
2020/12/13 DOTA
python脚本实现查找webshell的方法
2014/07/31 Python
在Python中使用判断语句和循环的教程
2015/04/25 Python
python实现简单图片物体标注工具
2019/03/18 Python
python画双y轴图像的示例代码
2019/07/07 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
Python实现爬取并分析电商评论
2020/06/19 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
2020/11/17 Python
纯HTML+CSS3制作导航菜单(附源码)
2013/04/24 HTML / CSS
Expedia印度尼西亚站:预订酒店、廉价航班和度假套餐
2018/01/31 全球购物
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
初级软件工程师面试题 Junior Software Engineer Interview
2015/02/15 面试题
英文自荐信
2013/12/15 职场文书
酒店管理专业毕业生求职自荐信
2014/04/28 职场文书
产品陈列协议书(标准版)
2014/09/17 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
62句有关感恩节文案(推荐收藏)
2019/11/28 职场文书
golang switch语句的灵活写法介绍
2021/05/06 Golang