Как создать новый объект как объект arg по умолчанию - PullRequest
0 голосов
/ 22 февраля 2020

Итак, у нас может быть это в редукторе:

const defaultState = {...};

export const userReducer = (state = defaultState, action: any) => {
   // ...
}

есть ли способ получить объект defaultState для каждого вызова userReducer? Примерно так:

const getDefaultState = () => ({...});

export const userReducer = (state = getDefaultState(), action: any) => {
   // ...
}

возможно ли это в JS? Это может быть бесполезно для редуктора Redux, но в целом мне любопытно.

1 Ответ

2 голосов
/ 22 февраля 2020

Да, как отметил @blex, ваши намерения полностью выполнимы.

В вашем фрагменте есть небольшая опечатка, которая может вызывать проблемы: необходимо упорядочить параметры со значениями по умолчанию (например, state) после параметров со значениями не по умолчанию (например, action).

Вот минималистский пример:

let x = () => 3;
let y = (a, b = x()) => a + b;

console.log(y(5)); // 8
console.log(y(5, 1)); // 6
...