我试图在分派之后运行方法,但是当我分派redux状态时,它在分派之前先运行代码,然后再完全分派。
<TouchableOpacity
onPress={() => {
dispatch(
addData({
name: "Test Name",
phone: "0000",
})
);
// dataReducer is the variable which returns state of reducer using selector
console.log("Added Data: " + JSON.stringify(dataReducer)); //returns []
}}
>
<Text>
{item.name}
</Text>
</TouchableOpacity>
如果我再按一次,它将返回更新的数组。这意味着状态在onpress完全渲染后才更新。我希望onPress在数据完全分派后再完成,然后移至下一行。我检查了useDispatch()没有附加任何回调方法。请指导什么是更好的方法。
答案 0 :(得分:0)
尝试一下
const setReducerState = () => {
dispatch(
addData({
name: "Test Name",
phone: "0000",
})
}
<TouchableOpacity onPress={() => setReducerState()}>
<Text>
{item.name}
</Text>
</TouchableOpacity>
由于异步特性,您将无法立即记录状态。
编辑
是的,您可以在分派后传递回调。
dispatch({
<your action>,
callback: () => {
//what you want to do here
}
})
现在您要在reducer中执行操作
case action.yourActionType:
action.callback(); // this callback you wanted