我希望在网络提取完成时调用组件的功能。
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) {
}
}
我可以想出两种方法来做到这一点,并想知道一个人是否优先于另一个或者是否有更好的方式?
方法1:
我将组件包含在动作有效负载中,以便我可以调用方法
方法2:
on action.response.action_type_success,改变redux状态。
然后,组件componentWillReceiveProps
比较状态变量是否发生变化并调用方法
答案 0 :(得分:1)
第二个。你正在使用redux-saga来处理副作用,所以保持这种方式。您可以将action回调添加到action1,但我不会混合概念。
如果您在成功时更新商店,它将重新呈现该组件,正如您所说,您可以检查 componentWillReceiveProps 中新更新的道具并触发该功能,但是,请检查nextProps而不是此.props(但我打赌你已经知道了)。
这样一切都以一种方式流动,没有回调地狱:) +你可以通过传递道具轻松测试组件。
虽然它本身并不是一个糟糕的模式,但传递回调将是双向流动,这打破了第一个流量规则:单向流动。