0.4.0 • Published 5 years ago
fk-action-type v0.4.0
this
这个是一个为了不写冗余的action和reducer而做的Redux的封装。使用方法如下:
首先创建一个Data
的实例,构造方法包括两个参数,name
和defaultState
。name
唯一标识一个Data对象,全局是不能重复的。defaultState
和redux中的一个意思,指默认store的值。
下面我们以创建一个只有name属性的store为例子,我们有一个setName
方法可以更改name属性的值。
如果是传统的redux,我们会怎么写?肯定像下面这样,首先创建一个action:
let nameAction = (newName) => ({
type: 'setName',
data: newName
})
然后在另一个js文件中创建一个reducer:
let nameReducer = (state, action) => {
return Object.assign({}, state, {
name: action.data
})
}
很麻烦不是?为什么不能写到一起呢?
let store = new Data('nameStore', {
name: 'default name'
}).listen('setName', {
action: name => (newName) => ({
type: name,
data: newName
}),
reducer: name => ({
[name]: (state, action) => {
return Object.assign({}, state, {
name: action.data
})
}
})
})
如果action纯粹是为了透传,那么action字段也可以省略。
let store = new Data('nameStore', {
name: 'default name'
}).listen('setName', {
reducer: name => ({
[name]: (state, action) => {
return Object.assign({}, state, {
name: action.data
})
}
})
})
自己封装一下会更加简洁:
let store = new Data('nameStore', {
name: 'default name'
}).listen('setName', {
reducer: simpleReducer((state, action) => ({
name: action.data
}))
})
如何触发一个action呢?
store.dispatch('setName', 'foo');
0.4.0
5 years ago
0.3.5
6 years ago
0.3.4
6 years ago
0.3.3
6 years ago
0.3.2
6 years ago
0.3.1
6 years ago
0.3.0
6 years ago
0.2.9
6 years ago
0.2.8
6 years ago
0.2.7
6 years ago
0.2.6
6 years ago
0.2.5
6 years ago
0.2.4
6 years ago
0.2.3
6 years ago
0.2.2
6 years ago
0.2.1
6 years ago
0.2.0
6 years ago
0.1.0
6 years ago
0.0.17
6 years ago
0.0.16
6 years ago
0.0.15
6 years ago
0.0.14
6 years ago
0.0.13
6 years ago
0.0.12
6 years ago
0.0.11
6 years ago
0.0.10
6 years ago
0.0.9
6 years ago
0.0.8
6 years ago
0.0.7
6 years ago
0.0.6
6 years ago
0.0.5
6 years ago
0.0.4
6 years ago
0.0.3
6 years ago
0.0.2
6 years ago
0.0.1
6 years ago