mirror.js 整合redux的好工具
mirror.js 很简单,让state管理更方便了,没有新增api,值 得使用
https://github.com/yurizhang/mirror
package.json
{
"name": "webpack",
"version": "0.1.0",
"private": true,
"dependencies": {
"axios": "^0.16.2",
"cross-env": "^5.0.1",
"element-react": "^1.0.19",
"element-theme-default": "^1.3.7",
"isomorphic-unfetch": "^2.0.0",
"mirrorx": "^0.2.5",
"next": "^3.0.0-beta16",
"react": "^15.6.1",
"react-dom": "^15.6.1",
"react-redux": "^5.0.5",
"redux": "^3.7.0"
},
"devDependencies": {
"react-scripts": "^1.0.7",
"redux-devtools": "^3.4.0"
},
"scripts": {
"dev": "node ./server.js",
"next_build": "next build",
"next_start": "node ./server-prd.js",
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject"
}
}
import React from 'react'
import mirror, {actions, connect, render} from 'mirrorx' // 声明 Redux state, reducer 和 action,
// 所有的 action 都会以相同名称赋值到全局的 actions 对象上 mirror.model({
name: 'app',
initialState: {
total:1,
list: [70,10]
},
reducers: { //用来修改state
increment(state,data) { console.log("state increment:"+data)
console.log(state)
let list=state.list;
console.log(list)
list.push(Math.floor(Math.random()*100));
//let tmpArray=state.list ||[];
return { //这里返回的要和你state结构是一样的
total:state.total+1,
list: list
}
},
decrement(state) {
return {
total:state.total-1,
list: [88]
}
}
},
effects: {
async incrementAsync() { //用来异步修改state
await new Promise((resolve, reject) => {
setTimeout(() => {
resolve()
}, 1000)
})
actions.app.increment()
}
}
}) const App = props => {
console.log("props")
console.log(props)
return (
<div id="counter-app">
<h1>{props.app.total}</h1>
<h1>{props.app.list}</h1>
<div className="btn-wrap">
<button onClick={() => actions.app.decrement()}>-</button>
<button onClick={() => actions.app.increment('ssssss')}>+</button>
<button style={{width: 100}} onClick={() => actions.app.incrementAsync()}>+ Async</button>
</div>
</div>
)
} const Mirror=connect(state => {
console.log("state")
console.log(state)
return {
app:state.app, //mapToProps 把state做为prop送给render
//total: state.app.total,
//data: state.app.list
}
})(App) render(<Mirror/>, document.getElementById('mirror'))
mirror.js 整合redux的好工具的更多相关文章
- Ext JS 6 新特性和工具
Ext JS 6 新特性和工具 Ext JS 6 带来很多新特性.工具和改进.以下是一些亮点: • 合并了 Ext JS & Sencha Touch - 在 Ext 6, 你可以访问 Ext ...
- 1>MSBUILD : cordova-build error BLD401: 错误: BLD00401: 找不到模块“C:\Users\z-pc\AppData\Roaming\npm\node_modules\vs-tac\app.js”。请转到“工具”-->“选项”-->“Apache Cordova 工具”-->“Cordova 工具”-->“清除 Cordova 缓存”,然后尝试重新生成
1>------ 已启动全部重新生成: 项目: BlankCordovaApp2, 配置: Debug Android ------1> Your environment has bee ...
- 认识Web前端、Web后端、桌面app和移动app新开发模式 - 基于Node.js环境和VS Code工具
认识Web.桌面和移动app新开发模式 - 基于Node.js环境和VS Code工具 一.开发环境的搭建(基于win10) 1.安装node.js和npm 到node.js官网下载安装包(包含npm ...
- activiti自定义流程之整合(二):使用angular js整合ueditor创建表单
注:整体环境搭建:activiti自定义流程之整合(一):整体环境配置 基础环境搭建完毕,接下来就该正式着手代码编写了,在说代码之前,我觉得有必要先说明一下activit自定义流程的操作. 抛开自定义 ...
- react.js 之 create-react-app 命令行工具系统讲解
react.js 教程之 create-react-app 命令行工具系统讲解 快速开始 npm install -g create-react-app create-react-app my-app ...
- activiti自己定义流程之整合(二):使用angular js整合ueditor创建表单
基础环境搭建完成,接下来就该正式着手代码编写了,在说代码之前.我认为有必要先说明一下activit自己定义流程的操作. 抛开自己定义的表单不谈.通过之前的了解,我们知道一个新的流程開始.是在启动流程实 ...
- 一个基于React整套技术栈+Node.js的前端页面制作工具
pagemaker是一个前端页面制作工具,方便产品,运营和视觉的同学迅速开发简单的前端页面,从而可以解放前端同学的工作量.此项目创意来自网易乐得内部项目nfop中的pagemaker项目.原来项目的前 ...
- debian下Apache和tomcat整合(使用apt工具)
最近部署web系统,需要使用tomcat处理和Apache整合使用,tomcat处理JSP,Apache处理静态资源.开始不知道怎么操作,在网上查阅资料走了很多弯路.完成时候,发现其实很简单,现将配置 ...
- JS,html压缩及混淆工具
现在已经出现了不少有自己特色的: JSMin Javascript compressor Packer Closure Compiler YUI Compressor Pretty Diff Java ...
随机推荐
- CentOS6.5 yum源设置
在安装完CentOS后一般需要修改yum源,才能够在安装更新rpm包时获得比较理想的速度. 国内比较快的有163源.sohu源.这里以163源为例子. 1. cd /etc/yum.repos.d 2 ...
- python中通过xlwt、xlrd和xlutils操作xls
xlwt模块用于在内存中生成一个xls/xlsx对象,增加表格数据,并把内存中的xls对象保存为本地磁盘xls文件; xlrd模块用于把本地xls文件加载到内存中,可以读取xls文件的表格数据,查询x ...
- [Codeforces 877E] Danil and a Part-time Job
[题目链接] https://codeforces.com/contest/877/problem/E [算法] 首先求出这棵树的DFS序 一棵子树的DFS序为连续的一段 , 根据这个性质 , 用线段 ...
- eclipse导入jsp文件第一行报错
- MT8735A平台配置MT6630
1. codegen配置 2. ProjectConfig CUSTOM_HAL_ANT = mt6630_ant_m1 CUSTOM_HAL_COMBO = mt6630 MTK_BT_CHIP = ...
- seafile文档
https://manual-cn.seafile.com/deploy_windows/download_and_setup_seafile_windows_server.html
- u盘启动安装系统
七彩虹主板如何设置U盘启动,本文就以七彩虹CG41主板为例详细的讲讲U盘启动设置方法. 几天前,想用U盘启动的时候,发现CG41主板启动顺序里找不到USB项,Boot Device Priority( ...
- Locked Treasure
题意: 有一宝箱,宝箱上有一些锁,有n个人,每个人分管一些钥匙(每个锁对应无数个钥匙), 现给出n,m 求问至少需要多少锁才能存在一种钥匙分配方案使得: 1.至少m个人才可以打开锁. 2.任选m个人一 ...
- Asset Catalog Help (四)---Adding an iOS App Icon Set or Launch Image Set
Adding an iOS App Icon Set or Launch Image Set Organize different resolutions of your app icons and ...
- android调试之adb
ADB 其实大部分的PC开发机与Android设备的操作都是通过adb(android debug bridge)技术完成的,这是一个C/S架构的命令行工具,主要由三个部分组成 运行在PC开发机上的命 ...