Должен ли я использовать Presentational и Container Components при использовании перехватчиков Redux? - PullRequest
1 голос
/ 03 марта 2020

Не так давно go Дэн обновил свою статью о Презентационных и контейнерных компонентах , сказав, что с крючками нам не нужны connect() и контейнеры больше. Но я не могу понять, что же такое прибыльные взгляды, так тесно связанные с моделью. Теперь компонент должен знать, где и как получить данные, которые делают его гораздо менее изолированным, что, на мой взгляд, очень большой минус

Например, у меня есть ProgressBar компонент, который имеет только одну подпорку - ширина

const ProgressBar = (props) => (
    <div style={{ width: `${props.width}%` }} className={styles['progress-bar']}></div>
);

Я мог бы использовать этот компонент в любом месте, зная его контракт: он занимает одну ширину опоры. Сам компонент не знает о реквизитах, и, по моему мнению, это делает фиктивные компоненты великолепными.

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

Без контейнера ProgressBar компонент должен самостоятельно собирать данные из хранилища:

const ProgressBar = () => {
    const width = useSelector(state => state.progress.width);

    return (
        <div style={{ width: `${width}%` }} className={styles['progress-bar']}></div>
    );
}

В этом случае:

  • Для работы View следует знать структуру of store (Модель)
  • Глядя на компонент, я не знаю о контракте и должен прочитать весь код внутри него, чтобы получить то, что нужно для работы
  • Я не могу повторно использовать его в других компонентах если я хочу, чтобы данные собирались не в магазине
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...