Как создать новый объект как объект arg по умолчанию
Итак, у нас может быть это в редукторе:
const defaultState = {...};
export const userReducer = (state = defaultState, action: any) => {
// ...
}
есть ли способ получить объект defaultState для каждого вызова userReducer? Что-то вроде этого:
const getDefaultState = () => ({...});
export const userReducer = (state = getDefaultState(), action: any) => {
// ...
}
это возможно в JS? Это может быть бесполезно для редуктора Redux, но в целом мне любопытно.
1 ответ
Решение
Да, как отметил @blex, ваши намерения вполне осуществимы.
В вашем фрагменте есть небольшая опечатка, которая может вызывать проблемы: параметры со значениями по умолчанию (т.е. state
) должны быть упорядочены после параметров со значениями, отличными от значений по умолчанию (т. е. action
).
Вот минималистичный пример:
let x = () => 3;
let y = (a, b = x()) => a + b;
console.log(y(5)); // 8
console.log(y(5, 1)); // 6