0.4.0 • Published 5 years ago

fk-action-type v0.4.0

Weekly downloads
2
License
MIT
Repository
github
Last release
5 years ago

this

这个是一个为了不写冗余的action和reducer而做的Redux的封装。使用方法如下:

首先创建一个Data的实例,构造方法包括两个参数,namedefaultStatename唯一标识一个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