Nano Hash - криптовалюты, майнинг, программирование

Презентационные компоненты Redux против компонента-контейнера

Я новичок в разработке реакции с редуксом. Мне интересно, что такое презентационные компоненты и компоненты контейнера.

  • Как классифицировать компоненты как презентационные или контейнерные?
  • В чем разница между этими двумя?
  • Каковы преимущества такой классификации компонентов?


Ответы:


1

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

Я предполагаю, что у вас есть знания о редукционной архитектуре

Компоненты контейнера

  • Осознавая избыточность
  • Состояние подписки на избыточность
  • Отправка на редукс действия
  • Сгенерировано реакцией-редукс
  • Сосредоточьтесь на том, как все работает

Презентационные компоненты

  • Не зная о редуксе
  • Чтение данных из реквизита
  • Вызывать обратные вызовы для реквизита
  • Написано разработчиком
  • Сосредоточьтесь на том, как все выглядит

Преимущества классификации компонентов

  • Возможность повторного использования
  • Разделение интересов

Подробнее читайте в этой статье.

13.01.2017

2

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

Компоненты контейнера

  • Обеспокоены тем, как все работает
  • Отвечает за предоставление данных презентационным компонентам через свойства.
  • Также отвечает за обработку изменений состояния, вызванных внутри компонента представления через свойства обратного вызова. Эти изменения состояния часто выполняются посредством отправки действия.

Пример:

class TodoApp extends Component {
 componentDidMount() {
 this.props.actions.getTodos();
 }
 render() {
 const { todos, actions } = this.props;
 return (
 <div>
 <Header addTodo={actions.addTodo} />
 <MainSection todos={todos} actions={actions} />
 </div>
 );
 }
}
function mapState(state) {
 return {
 todos: state.todos
 };
}
function mapDispatch(dispatch) {
 return {
 actions: bindActionCreators(TodoActions, dispatch)
 };
}
export default connect(mapState, mapDispatch)(TodoApp);

Компоненты презентации

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

Пример:

<MyComponent
 title=“No state, just props.”
 barLabels={["MD", "VA", "DE", "DC"]}
 barValues={[13.626332, 47.989636, 9.596008, 28.788024]}
/>
02.09.2018

3

Вот как я это понимаю:

Компоненты презентации

заботиться о том, как все выглядит

Компоненты контейнера

компоненты с задействованной логикой

Однако после дальнейших исследований я понял, что такое разделение иногда не нужно, как упоминал Дэн Абрамов здесь: https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0

Вы можете понимать компонент презентации как то, что вы найдете в библиотеке компонентов пользовательского интерфейса. Они делают компонент пользовательского интерфейса красивым. Затем нужно только составить компоненты презентации в компоненте-контейнере по мере необходимости.

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

Поскольку в программировании нет жестких правил, библиотека компонентов пользовательского интерфейса React может иметь некоторую логику, тесно связанную с компонентом (то есть то, как он ведет себя, например, компонент ящика), и по-прежнему рассматриваться как компонент представления.

15.02.2020
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..