Redux Watch не реагирует на изменения в магазине - PullRequest
0 голосов
/ 23 июня 2019

Я пытаюсь отслеживать изменения в атрибуте хранилища резервов, подписавшись на изменение с помощью отслеживания резервов.Для одного атрибута это работает нормально.С другой стороны, я делаю запрос API в редукторе (не могу делать асинхронные запросы в действиях).
Я проверил, что состояние избыточности действительно обновляется, создав кнопку для отображения новой информации.Тем не менее, мой компонент на самом деле не подписывается на изменение.Кто-нибудь знает, почему это так?

import watch from 'redux-watch';
import {store} from '../index.js';

class ListResults extends Component {
  constructor() {
    super();
    this.state = {
      profiles: [],
    };
  }

componentDidMount() {
    let w = watch(store.getState, 'searchResults');
     store.subscribe(w((newVal, oldVal, objectPath) => {

          // not getting called
          console.log("Successfully got new searchResults")
    }))

  }

...
render() {
...
}
...

function mapStateToProps(state) {
    return {
       searchResults: state.searchResults,
    };
}

export default connect(mapStateToProps)(ListResults);


1 Ответ

0 голосов
/ 23 июня 2019

Редукторы Redux должны быть чистыми функциями!

... создание запроса API в редукторе (невозможно выполнить асинхронные запросы в действиях).

очень похоже на неправильную реализацию редуктора.

Чтобы сделать асинхронные запросы с помощью redux, вы должны обратиться к промежуточному программному обеспечению redux, например redux-thunk, redux-observables или redux-saga

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...