Ответы пользователя по тегу React
  • Ошибка: Cannot read property 'push' of undefined как решить?

    polarlord
    @polarlord
    Этот код работает:
    this.props.logoutUser(this.props.history)

    Этот код вызывает ошибку (вызывается метод у аргумента который не передали):
    store.dispatch(logoutUser());

    Попробуйте в logoutUser() передавать то что он хочет, либо в нём обращаться к этому аргументу по условию:
    if (history !== 'undefined') {
      history.push('/login')
    }
    Ответ написан
    Комментировать
  • Прокидывать пропс или создать много контейнеров?

    polarlord
    @polarlord
    Смотрите, прокидывать через все приложение кучу props - это очень неправильно. Если будет меняться какой-либо пропс то он вызовет обновление всех компонентов через которые он явно передается, даже если он там не используется. Если уж очень хочется использовать такой путь - то уж лучше использовать React Context.
    По поводу создания контейнеров - тут вопрос стиля. Я довольно часто встречаю в проектах такое разделение:
    components - все stateless компоненты и также компоненты где нужен только стейт из redux, тут просто сам компонент заворачивается в connect()
    containers - компоненты где нужны и стейт и экшены, тут нужно помнить основные свойства (из знаменитой статьи) контейнеров, т.е. никакой верстки, возможно использовать только другие компоненты и т.д.
    Хотя правильнее всего разбивать приложение на небольшие и универсальные компоненты, как написали выше. Это конечно не так просто в начале, по сравнению с убер-компонентами, но зато потом это все окупится с лихвой.
    Ответ написан
    Комментировать
  • Как dispatch оказался в props?

    polarlord
    @polarlord
    Потому что в данном примере в connect() не передается mapDispatchToProps() а по-умолчанию его значение это dispatch => ({ dispatch })
    Больше можно почитать в офф. доке https://react-redux.js.org/docs/api#arguments или здесь https://stackoverflow.com/questions/34458261/how-t...
    Ответ написан
    Комментировать