Redux Watch不响应Redux存储中的更改

时间:2019-06-22 22:22:05

标签: reactjs redux

我试图通过使用redux watch订阅更改来监视redux store属性中的更改。对于一个属性,它工作正常。另外,我正在用reducer发出API请求(不能在动作中发出异步请求)。
我已经通过创建显示新信息的按钮来验证redux状态确实得到了更新。 但是,我的组件实际上并没有订阅该更改。 有人知道为什么吗?

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 :(得分:0)

Redux减速器必须是纯函数!

  

...在reducer中发出API请求(无法在操作中发出异步请求)。

听起来很像不正确的reducer实施。

为了通过redux发出异步请求,您应该研究redux中间件,例如redux-thunkredux-observablesredux-saga