У меня проблемы с функцией обратного вызова prepare
, включенной в мой addEntity
reducer, который я включаю в функцию createSlice
redux-toolkit.
Я пытаюсь использовать обратный вызов prepare
, чтобы добавить уникальные идентификаторы в мои полезные данные.
redux-toolkit createSlice
документация говорит:
Если вам нужно настроить создание значения полезной нагрузки создателя действия с помощью обратного вызова prepare, значение соответствующего поля объекта аргумента redurs должно быть объектом, а не функцией. Этот объект должен содержать два свойства: reducer и prepare. Значение поля reducer должно быть функцией case reducer, тогда как значение поля prepare должно быть функцией обратного вызова подготовки.
Вот код, который я использую (написано с TypeScript):
import { createSlice, createEntityAdapter } from '@reduxjs/toolkit';
import { MyEntityType } from '../../js/types/MyEntityType';
import { v4 as uuidv4 } from 'uuid';
const myEntityAdapter = createEntityAdapter<MyEntityType>();
const { reducer, actions } = createSlice({
name: 'myEntity',
initialState: myEntityAdapter.getInitialState(),
reducers: {
addEntity: {
reducer: myEntityAdapter.addOne,
prepare: (payload) => ({...payload, id: uuidv4()}),
},
removeEntity: myEntityAdapter.removeOne,
updateEntity: myEntityAdapter.updateOne,
}
});
Однако, когда я компилирую свое приложение и тестирую создание объекта с помощью действия addEntity
, обратный вызов prepare
, похоже, ничего не делает.
Вот действие Я отправляю с помощью Redux DevTools:
{
type: 'myEntity/addEntity',
payload: {myPayloadTrait: 100, id: 'test'} // Expected behavior: this id should be overwritten in the prepare callback
}
Результирующее состояние:
myEntity: {
ids: {
0:"test"
},
entities: {
"test": {
myPayloadTrait: 100
id: "test"
}
}
}
Почему мой обратный вызов подготовки не перезаписывает "test"
id перед передачей полезной нагрузки редуктору? Будем очень признательны за любую помощь или руководство.