разница между этими двумя типами
В первом примере присваивается selectMyValue
тому, что createSelector
возвращается.Поэтому вы можете вызывать его с вашим состоянием:
const value = selectMyValue(someState)
В то время как второй пример возвращает функцию, которая обернута createSelector
.Но createSelector
еще не вызван.Вы будете использовать эту функцию, чтобы вызвать ее позже:
const wrapped = selectMyValue();
const value = wrapped(someState);
или один вкладыш:
const value = selectMyValue()(someState);
когда и какие использовать?
Вы, вероятно, будете использовать первый в большинстве случаев.Однако может возникнуть ситуация, когда вам нужно предоставить некоторые аргументы для вашей функции-оболочки.
Например:
export const selectMyValue = (value) => createSelector(
rootSelector,
state => state[value] // just an example
)
Здесь ваша оболочка принимает аргумент с именем value
.Вы можете вызвать его как утилиту для извлечения различных частей состояния:
const valueFromState = selectMyValue('someValue')(state);
const someOtherValueFromState = selectMyValue('someOtherValue')(state);