git clone https://gitee.com/Rattenking/weapp-redux-demo.git
constants 目录,用来放置所有的 action type 常量 actions 目录,用来放置所有的 actions reducers 目录,用来放置所有的 reducers
store/index.js
---
import { createStore, applyMiddleware } from '../weapp-redux/index'
import reducer from './reducers/index';
const store = createStore(reducer)
export default store;
app.js
---
import store from './store/index'
import action from './store/actions/index'
import Provider from './weapp-redux/provider/index'
let { Page, Component } = Provider(store, action)
constants/actionTypes.js
---
// 数字操作命令
// 加
export const ADD = 'ADD';
// 减
export const MINUS = 'MINUS';
reducers/numHandle.js
---
import {
ADD,
MINUS
} from '../constants/actionTypes'
const defaultState = {
count: 0
}
export const numHandle = (state = defaultState, action) => {
switch (action.type) {
case ADD:
return { ...state, count: state.count + 1 };
case MINUS:
return { ...state, count: state.count - 1 };
default:
return state;
}
}
reducers/index.js
---
import { combineReducers } from '../../weapp-redux/index';
import { numHandle } from './numHandle';
export default combineReducers({
numHandle
})
actions/numHandle.js
---
import store from '../index'
import {
ADD,
MINUS
} from '../constants/actionTypes';
export function add(){
store.dispatch({
type: ADD
})
}
export function minus(){
store.dispatch({
type: MINUS
})
}
export function asyncAdd(){
setTimeout(() => {
add()
}, 2000)
}
actions/index.js
---
import * as numHandle from './numHandle';
export default {
numHandle
}
pages/index/index.js
---
Page({
storeTypes: ['numHandle'],
data: {},
add(){
this.$action.numHandle.add();
},
minus(){
this.$action.numHandle.minus();
},
asyncAdd(){
this.$action.numHandle.asyncAdd();
}
})
pages/index/index.wxml
---
<view class="container">
<view>Hello, World!</view>
<view>{{numHandle.count}}</view>
<button catchtap="add">+</button>
<button catchtap="minus">-</button>
<button catchtap="asyncAdd">asyncAdd</button>
<navigator url="../logs/logs">import 引入操作页</navigator>
<navigator url="../actionType/index">actionTypes 引入操作页</navigator>
</view>
pages/logs/logs.js
---
import {
add,
minus,
asyncAdd
} from '../../store/actions/numHandle';
Page({
storeTypes: ['numHandle'],
add,
minus,
asyncAdd
})
pages/actionType/index.js
---
Page({
storeTypes: ['numHandle'],
actionTypes: ['numHandle']
})