Если мы не сделаем компонент React компонентом Presentation, не будет ли этот компонент легко использовать повторно? - PullRequest
0 голосов
/ 30 марта 2020

Я не совсем понимаю Комментарий Дана Абрамова в 2019 году в его статье «Контейнер против презентационного компонента» .

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

Таким образом, компонент может иметь состояние, но только «состояние компонента», например, развернуто ли поле комментария или нет, или даже текущий текст в поле комментария и т. д. c. Он не должен быть тесно связан с определенным состоянием в приложении. Потому что тогда мы не сможем повторно использовать этот компонент, если только он точно не является единым целым во всем приложении, что означает, что повторного использования не существует.

Значит ли это на самом деле, что мы должны писать наши компоненты так, чтобы это можно использовать повторно, и позволить другому компоненту передавать данные приложения как «реквизит»? Таким образом, мы можем повторно использовать наши компоненты, просто передавая различные реквизиты (и отправку) из внешнего контейнера.

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

1 Ответ

0 голосов
/ 30 марта 2020

ИМХО, это утверждение было больше о гранулярности и разделении бизнес-логик c ... Контейнер обычно управляет некоторым приложением, указанным c набором данных с некоторым набором презентационных компонентов.

Конечно, компонент контейнера также можно использовать . Например, список пользователей-подписчиков может использовать общий клиент Apollo (graphql), если наши серверные части составлены с использованием одной и той же (общей) схемы (для микросервисов / федерации). Он может свободно использоваться в различных приложениях, и с помощью реквизита рендеринга мы можем изменить его внешний вид / поведение.

В целом речь идет о возможности повторного использования, гораздо проще для состояний (презентационных) и локально управляемых компонентов состояния (класса или функционала). ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...