我试图通过使用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);
答案 0 :(得分:0)
Redux减速器必须是纯函数!
...在reducer中发出API请求(无法在操作中发出异步请求)。
听起来很像不正确的reducer实施。
为了通过redux发出异步请求,您应该研究redux中间件,例如redux-thunk
,redux-observables
或redux-saga