Каков наилучший способ установить значение реквизита по умолчанию? [закрыто]

avatar
Keval Bhogayata
9 августа 2021 в 07:02
826
3
0

В моем приложении есть несколько реквизитов, полученных от селектора редуктора.

Мне было интересно, должен ли я установить значения по умолчанию для реквизита во всех нижеуказанных местах?

  1. по умолчаниюProps
  2. в редукторе
  3. в селекторе

Или я должен определить значение по умолчанию только в 1 из этих 3 мест, и почему?

Источник

Ответы (3)

avatar
Anil Kumar
9 августа 2021 в 07:17
1

Рекомендуется устанавливать значения по умолчанию только в одном месте. Потому что, если он установлен в одном месте, вам не нужно снова и снова возиться с разными компонентами, селекторами и т. д. Это также позволит избежать ошибок из-за значений по умолчанию.

  1. at defaultProps: если вы установите defaultProps, вы в конечном итоге установите значение по умолчанию в нескольких компонентах, если prop используется в нескольких компонентах. Если вы пропустите, несоответствие результатов, отображаемых в пользовательском интерфейсе.
  2. в селекторе: если вы используете один и тот же реквизит из хранилища в нескольких селекторах, вы должны установить значение по умолчанию, прежде чем возвращать результат. Опять же не лучший подход.
  3. в редукторе: это место, откуда опора будет храниться. Как только вы установите значение по умолчанию, оно будет использоваться во всех компонентах, селекторах без каких-либо изменений.

Я думаю, установка в reduce выглядит более многообещающим и стабильным подходом, учитывая расширяемое приложение.

avatar
Shubham Khatri
9 августа 2021 в 07:21
0

В идеале у вас должна быть настройка реквизита по умолчанию только в одном общем месте, а не везде в вашем коде, так как это будет сложно поддерживать, если вам придется изменить логику в будущем.

Наличие значения по умолчанию в селекторе дает вам то преимущество, что вам не нужно беспокоиться о сбросе значений в редукторе для каждого обновления, а также вы можете запомнить использование значения.

avatar
marcobiedermann
9 августа 2021 в 07:09
0

Это действительно зависит от контекста. Я бы рекомендовал использовать параметры ES6 по умолчанию: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters

например,

const MyComponent = props => {
  const { name = 'default name' } = props;

  return (
    <>
     {name}
    </>
  )
}

Тот же принцип применим к вашим переходникам:

например,

function myReducer(state = { name: 'default name' }, action) {
  switch (action.type) {}
}

Этот метод работает для всех функций. В качестве альтернативы вы также можете использовать Component.defaultProps для компонентов React.

Keval Bhogayata
9 августа 2021 в 07:16
0

Спасибо, я знаю об этих методах. Но я предлагаю/спрашиваю: если мы просто установим значение по умолчанию (здесь «имя по умолчанию») в редюсере и не будем указывать значения по умолчанию в селекторе и в defaultProps, будет ли это хорошей идеей?

marcobiedermann
9 августа 2021 в 07:27
0

Я бы постарался держать их отдельно. В лучшем случае ваш компонент не знает ни о каком состоянии/логике. Поэтому я бы предпочел определить их дважды (например, редуктор И компонент). Таким образом, вы можете перемещать их и добавлять специальные модульные тесты. В противном случае это композиция, для которой вам нужен интеграционный тест, потому что они зависят друг от друга.