Реагировать на родной крюк Продолжить после отправки - PullRequest
1 голос
/ 22 апреля 2020

Я пытаюсь запустить метод после отправки, но когда я отправляю избыточное состояние, он запускает код после отправки до того, как его полностью отправят.

<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 голосов
/ 22 апреля 2020

Попробуйте это

const setReducerState = () => {
dispatch(
     addData({
     name: "Test Name",
     phone: "0000",
   })
}

<TouchableOpacity onPress={() => setReducerState()}>
          <Text>
            {item.name}
          </Text>
</TouchableOpacity>

Вы не сможете сразу зарегистрировать состояние из-за асин c природы.

РЕДАКТИРОВАТЬ

Да, вы можете передавать обратные вызовы после отправки.

dispatch({
<your action>,
callback: () => {
 //what you want to do here
}
})

Теперь, когда вы получаете свое действие в редукторе

case action.yourActionType:
     action.callback(); // this callback you wanted
...