派遣后反应本机挂钩

时间:2020-04-22 09:37:17

标签: reactjs react-native react-redux react-hooks dispatch

我试图在分派之后运行方法,但是当我分派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()没有附加任何回调方法。请指导什么是更好的方法。

1 个答案:

答案 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