@flx12

Как изменить state при загрузке страницы в React — Redux — Router?

Пытаюсь обновлять заголовок при переходе между страницами. Заголовок страницы хранится в глобальном state, и выводится в компоненте Header . Пробовал так
const List = ({ onPageLoad }) => {		
		return (<div>{onPageLoad('Page list')}</div>);
}
const mapDispatchToProps = (dispatch) => ({
		onPageLoad: (title) => {
			dispatch({type:'SET_TITLE', title});
		}
});

заголовок обновляется, но ругается в консоли
Warning: setState(...): Cannot update during an existing state transition (such as within `render` or another component's constructor). Render methods should be a pure function of props and state; constructor side-effects are an anti-pattern, but can be moved to `componentWillMount`.


как правильно его обновлять?
  • Вопрос задан
  • 1828 просмотров
Решения вопроса 1
devellopah
@devellopah
не совсем понятно, что рендерит этот компонент, если заголовок рендерится в другом компоненте? я просто верну null, а дальше ты сам разбирайся.

import React from 'react';
import { connect }  from 'react-redux';

class List extends React.Component {
    componentDidMount() {
        this.props.onPageLoad('Page list');
    }
    render() {
        return null;
    }
}

const mapDispatchToProps = (dispatch) => ({
    onPageLoad: (title) => {
      dispatch({type:'SET_TITLE', title});
    }
});

export default connect(null, mapDispatchToProps)(List);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
в конструкторе контейнера вызвать нужное действие
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы