我有这种方法:
export const logout = replace => async dispatch => {
Alert.alert(
"Logout",
"Are you sure?",
[{
text: "No",
style: "cancel"
},
{
text: "OK",
onPress: () => logoutUser()
}
], {
cancelable: false
}
);
};
当dispatch
关键字在那里时,它不会被调用。不确定发生了什么,因为我的商店似乎配置正确(我已经通过将数据添加到状态并通过控制台记录该数据来进行测试)。
import {
createStore,
applyMiddleware
} from "redux";
import thunk from "redux-thunk";
import rootReducer from "./reducers";
const middleware = [thunk];
const initialState = {};
const configureStore = createStore(
rootReducer,
initialState,
applyMiddleware(...middleware)
);
export default configureStore;
不知道我在做什么错了。
编辑:
整个logout
方法:
export const logout = replace => {
console.log("entered?"); // never prints
const logoutUser = async () => {
dispatch({
type: LOGOUT
});
await SecureStore.deleteItemAsync("jwt");
replace("Home", {
name: "Home"
});
};
Alert.alert(
"Logout",
"Are you sure?",
[{
text: "No",
style: "cancel"
},
{
text: "OK",
onPress: () => logoutUser()
}
], {
cancelable: false
}
);
};
答案 0 :(得分:0)
const logoutUser = () => dispatch => {
dispatch({
type: LOGOUT
});
replace("Home", {
name: "Home"
});
};
答案 1 :(得分:0)
好的,所以我弄清楚了(有点)。 hacky方法,但是,嘿,那是编程。
无论如何,我试图从logout
访问navigationOptions
,它本身是一种导出方法,而不是“连接”到应用程序。无论如何,我放弃了=> async dispatch {
并从/src/store
导入了商店,并执行以下操作:
import store from "../store";
export const logout = async replace => {
await SecureStore.deleteItemAsync("jwt");
store.dispatch({
type: LOGOUT
});
replace("Home", {
name: "Home"
});
};