为什么派遣到减速器会导致所有减速器被调用?

时间:2016-05-22 21:36:59

标签: redux react-redux

在此github redux example中,事件ADD_TODO的调度用于添加任务。在调试过程中,我发现添加任务会导致调用reducers todos visibilityFilter

添加任务时,如何只调用 todos reducer而不是 visibilityFilter reducer。如果我发送了一个SET_VISIBILITY_FILTER类型的事件,那么 visibilityFilter 还原器。

2 个答案:

答案 0 :(得分:2)

int main() { mbedtls_aes_context aes; mbedtls_aes_context aes2; unsigned char key[16] = "itzkbgulrcsjmnv"; key[15] = 'x'; unsigned char iv[16] = {0xb2, 0x4b, 0xf2, 0xf7, 0x7a, 0xc5, 0xec, 0x0c, 0x5e, 0x1f, 0x4d, 0xc1, 0xae, 0x46, 0x5e, 0x75}; const unsigned char *input = (const unsigned char*) "Some string to b"; unsigned char output[128] = {0}; unsigned char output2[128] = {0}; mbedtls_aes_setkey_enc( &aes, key, 16*8 ); mbedtls_aes_crypt_cbc( &aes, MBEDTLS_AES_ENCRYPT, strlen((const char*)input), iv, input, output ); mbedtls_aes_setkey_dec( &aes2, key, 16*8 ); mbedtls_aes_crypt_cbc( &aes2, MBEDTLS_AES_DECRYPT, strlen((const char*)output), iv, output, output2 ); } 实用程序有意为每个操作调用所有附加的reducer函数,并给予他们响应的机会。这是因为建议的Redux reducer结构是" reducer composition",其中许多大多数独立的reducer函数可以组合成一个结构,并且许多reducer函数可能潜在地响应单个动作并更新它们自己的切片状态。

答案 1 :(得分:1)

正如在其他答案中提到的,在调用 dispatch 时 combineReducers 会调用每个 reducer。您可以通过使默认情况等于传入的状态参数来避免其他值的更改,因此基本上它们会被重新分配其当前值。 例如:

const individualReducer = (state = "initialState", action) => {
    switch(action.type)
    {
        case "ACTION_TYPE":
            return action.payload;
        default:
            return state;
    }
}

export default individualReducer;