Как работает react + redux?

Доброго времени суток. Должна предупредить, что я в react новичок и заранее извиняюсь за глупый вопрос.
Погуглив что такое react и с чем его едят решила написать react приложение с использованием redux и router (react-router-redux^5.0.0-alpha.6)
И тут я поняла, что, видимо, не до конца осознаю как работает redux. Грубо говоря, у меня в приложении есть хедер(выдвижное меню навигации) и контент(туда выводиться содержимое страниц в зависимости от пути).

Header - умный контейнер, в котором функция connect берёт только необходимые части store для меню навигации и navigationActions.
SwitchContainer - там роуты, которые рендерят необходимые "умные" компоненты в зависимости от адреса страницы. В каждом таком "умном" компоненты так же есть connect, которая берёт только нужные части store (навигацией там и не пахло)
class App extends Component {

    constructor(props){
        super(props);
    }

    render() {
        return (
            <div className="component-app">
                <Header />
                <div className="all-wrapper">
                    <div className="main-content">
                        <SwitchContainer />
                    </div>
                </div>
            </div>
        )
    }
}


Почему когда я использую функции navigationActions, которые меняют только те части состояния, что связаны с меню навигацией, на это так же реагируют другие компоненты, в которые не поступают части store, связанные с навигацией?

Надеюсь, понятно изложила свою мысль.
Скорее всего я что-то не так делаю? Может быть в store не должно храниться состояние отдельных страниц, а только общее состояние приложения? Неправильно что-то использую? Помогите пожалуйста
  • Вопрос задан
  • 462 просмотра
Решения вопроса 1
конкретно с пакетом react-router-redux я не работал, но похоже вот на что:
Редакс редюсеры - это чистые функции, которые возвращают новый объект, это означает, что когда вы вызываете экшен navigationActions, который в свою очередь вызывает редюсер, то в итоге получаете новый state, а т.к. другие ваши компоненты используют state, то для них этот state тоже новый, и происходит ререндер, чтобы не происходило лишних ререндеров, вам поможет метод shouldComponentUpdate или PureComponent
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы