Что касается ReactJS, как изменится использование компонентов Container и Presentation на использование Hooks?

Раньше в ReactJS одним из способов было разделить наши компоненты на компоненты-контейнеры и презентационные компоненты и даже Дэн Абрамов написал заметку о том, что это уже не тот случай, можем ли мы сейчас использовать хуки.

Как это сделать сейчас — как хуки решают проблему?

Вопрос больше похож на: даже с функциональными компонентами, которые могут иметь состояния, должны ли мы по-прежнему проектировать наше приложение, чтобы иметь компоненты-контейнеры, которые имеют состояния, и иметь презентационные компоненты, которые строго не имеют состояния и, следовательно, похожи на «чистую функцию», чтобы принимать реквизит и представить данные. Или нам все равно и использовать состояния во всех компонентах, которые у нас есть?


person nonopolarity    schedule 09.03.2020    source источник


Ответы (1)


С помощью хуков вы можете сделать функциональные компоненты стабильными, вот пример.

Const Component =()=>{
 Const [count, setCount]=useState(0);
 Return(
    <Button

      onClick={()=>setCount(count+1)}      
     >{count}</Button>)}

** и если вы сравните как компоненты на основе классов, так и функциональные компоненты, вы увидите, как хуки делают код меньше и чище для чтения и понимания, надеюсь, я хорошо объяснил! **

person Baha    schedule 09.03.2020
comment
подождите... в прошлом мы могли использовать только компоненты класса, и они тоже сохраняли состояние... поэтому в прошлом мы могли использовать только компоненты класса (и вообще не использовать компоненты функций), но в нашем приложении мы по-прежнему разделяем наш класс компоненты на контейнерные и презентационные компоненты. Итак, теперь функциональные компоненты могут иметь состояния, поэтому в нашем приложении мы больше не делим наши компоненты на контейнерные и презентационные компоненты? я не совсем понимаю суть - person nonopolarity; 09.03.2020
comment
Нет, вы делите свои компоненты на контейнеры и презентационные компоненты. - person Baha; 09.03.2020
comment
Вы можете делать то, что может сделать даже класс с помощью хуков, но чище проверьте мои изменения в ответе! - person Baha; 09.03.2020
comment
Вы говорите, что сегодня мы по-прежнему делим наши компоненты на контейнерные и презентационные компоненты, но только что мы можем использовать функциональные компоненты в качестве контейнера, вот и все? - person nonopolarity; 09.03.2020
comment
Да, мы разделяем и используем архитектуру, которую хотим, только более чистым способом, и даже команда реагирования говорит, что функциональные компоненты будут иметь больше оптимизации в будущем, что означает более высокую производительность! - person Baha; 09.03.2020
comment
если это так, то оператор мог бы использовать функциональные компоненты в качестве контейнеров (и по-прежнему использовать компоненты контейнера)... Я думаю, что оператор больше похож на то, чтобы больше не делить наши контейнеры на контейнерные и презентационные компоненты. (и не используйте компоненты контейнера) - person nonopolarity; 09.03.2020
comment
Функциональные компоненты после хуков могут играть как роли без сохранения состояния, так и с сохранением состояния лично после работы с хуками в течение нескольких месяцев. Я не чувствую, что хочу снова использовать компоненты на основе классов, поскольку я сказал, что функциональные компоненты чище, их легко читать, и они могут делать то же, что и компонент класса. я все еще могу использовать его как контейнер, а также как компоненты презентации - person Baha; 09.03.2020
comment
поэтому вы говорите, что теперь все компоненты будут иметь состояния, и не будете разрабатывать свое приложение для компонентов, которые строго не содержат состояний и предназначены только для презентации - person nonopolarity; 09.03.2020
comment
Это все о вашем случае использования! Если ваш компонент предназначен только для представления данных, то зачем использовать состояние! Вы можете использовать как с сохранением состояния, так и без сохранения состояния. - person Baha; 09.03.2020