Как создать новый объект как объект 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

Другие вопросы по тегам