在此github redux example中,事件ADD_TODO的调度用于添加任务。在调试过程中,我发现添加任务会导致调用reducers todos 和 visibilityFilter 。
添加任务时,如何只调用 todos reducer而不是 visibilityFilter reducer。如果我发送了一个SET_VISIBILITY_FILTER类型的事件,那么 visibilityFilter 还原器。
答案 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;