Reactjs redux传奇,网络调用功能完成?
我想在网络获取完成时调用组件的函数Reactjs redux传奇,网络调用功能完成?,reactjs,redux,redux-saga,Reactjs,Redux,Redux Saga,我想在网络获取完成时调用组件的函数 function callRestApi({config, schema}) { return axios(config).then((response) => { if (schema) { var data = normalize_json(response.data, schema) response.entities = data.entities } return respon
function callRestApi({config, schema}) {
return axios(config).then((response) => {
if (schema) {
var data = normalize_json(response.data, schema)
response.entities = data.entities
}
return response
})
}
function* fetchEventList(action) {
try {
const response = yield call(callRestApi, action.payload);
// here I want to call a component's method if possible
yield put({type: action.response.action_type_success, response});
} catch (e) {
}
}
我可以想出两种方法来做到这一点,不知道是一种方法比另一种更可取,还是有更好的方法
- 方法一:
我将组件包括在操作负载中,以便调用该方法 - 方法二:
在action.response.action\u type\u success上,更改redux状态。
然后,组件的
比较状态变量是否更改并调用该方法组件将接收props
- 第二个。您正在使用redux传奇来处理副作用,所以请保持这种方式。您可以将回调作为method1添加到操作中,但我不会混淆概念
如果成功更新存储,它将重新呈现组件,正如您所说,您可以在组件中检查最新更新的道具将接收道具并触发该功能,但是,请检查nextProps而不是this.props(但我敢打赌您已经知道这一点)
这样,一切都是单向的,没有回调:)+只需传递一个道具,就可以轻松测试组件
虽然这本身不是一个坏模式,但传递回调将是双向流,这打破了流量的第一条规则:单向流。感谢您给出了明确的答案,为什么第一个方法会导致双向流?因此在流量中,如果传递回调,它是这样的:查看->操作->调度程序->存储->查看,它转到查看操作->调度程序,因为它正在破坏单向流。看看这里,我想你会很好地理解它:对不起,我指的是双向流(不是数据流),谢谢,我理解它是什么,尽管doc没有说为什么它很重要。也许这更能说明问题: