Реагировать на обновление компонента из другого компонента - PullRequest
0 голосов
/ 03 октября 2018

У меня есть компонент заголовка и контейнер сообщений в моем веб-приложении.Они являются как отдельными, так и дочерними компонентами приложения.Контейнер posts самодостаточен и выполняет все запросы firebase.Мне нужны кнопки заголовка, такие как NEW, которые будут показывать только новые сообщения.

Проблема в том, что у меня нет доступа к postContainer из заголовка.Я использую избыточность, так что я могу обновить состояние в избыточности и получить эту информацию, но мне нужно обновить postsContainer, чтобы он действительно использовал информацию из избыточности.

Понятия не имею, как это сделать.Я не могу просто перезагрузить всю страницу, потому что состояние избыточности будет сброшено, поэтому мне просто нужно каким-то образом принудительно обновить весь этот компонент postsContainer.Функции GetPosts находятся в componentDidUpdate, поэтому мне нужно либо инициировать componentDidUpdate, либо функцию getPosts.

Я не могу сейчас создать новый родительский компонент, было бы проще просто сделать эти кнопки частью компонента PostsContainer.

По сути, мне просто нужно вызвать функцию или ComponentDidUpdate в компоненте A из компонента B после нажатия кнопки в компоненте B. Если это возможно каким-либо образом.

Как уже упоминалось, яЯ использую Redux и ReactRouter.

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 03 октября 2018

Да, это возможно.После того, как вы нажмете кнопку в компоненте B, запустите обновление в хранилище Redux и установите какой-либо флаг или измените свойство.Подключите компонент А к редуксу и прослушайте изменения в магазине.Использование mapStateToProps сопоставления состояний из хранилища резервов с реквизитом в компоненте A.

После этого, используя ComponentWillReceiveProps, сравните this.props.changedProp и nextProps.changedProp, и когда произойдет изменение, это то место, где вы делаете свое дело,

...