Каждый раз, когда я отправляю действие с пульта, я сохраняю его в AsyncStorage с его префредным уникальным именем.
Кодовый удар проверит связь для устройства Android, а затем отправит действие при подключении
Если мы подключены к интернету, он отправит действие
Если нет, он получит данные из AsyncStorage и отправит их в качестве второго параметра для сохранения в виде избыточного состояния.
Компонент, вызывающий действие
// For Android devices
if (Platform.OS === "android") {
NetInfo.isConnected.fetch().then(isConnected => {
if (isConnected) {
this.props.dispatch(fetchTasks(tok, null));
}
else {
AsyncStorage.getItem("@Your:Data").then(data => {
if (data !== null) {
this.props.dispatch(fetchTasks(token, JSON.parse(data)));
}}}
Действие
Вы можете видеть, что я делаю со своими данными второго аргумента о действии.
export default function fetchTasks(token, asyncStorageData) {
if (asyncStorageData !== null) {
return function(dispatch) {
dispatch({
type: FETCH_TASKS_SUCCESSFUL,
payload: asyncStorageData
});
};
}
return function(dispatch) {
axios
.get(`${api_endpoint}/your/data`, {
headers: {
Token: token
}
})
.then(response => {
dispatch({ type: FETCH_TASKS_SUCCESSFUL, payload: response.data });
AsyncStorage.setItem(
"@Your:Data",
JSON.stringify(response.data)
);
})
.catch(err => {
dispatch({ type: FETCH_TASKS_ERROR, payload: err });
});
};
}