在我的电子商务网站中,我使用redux和firebase进行反应来存储数据和身份验证,用户可以将商品添加到购物车中,然后访问购物车组件,但是在他注销购物车中的商品后,相同,所以我必须从cardReducer
authReducer
的状态
身份验证操作:
export const signOut = () => {
return (dispatch, getState, {getFirebase}) => {
const firebase = getFirebase();
const card = getState().card
firebase.auth().signOut().then(() => {
dispatch({ type: 'SIGNOUT_SUCCESS', card })
});
}
}
减卡器:
const initState= []
const cardReducer = (state = initState, action) => {
switch (action.type) {
case 'ADD_POST':
if (!state.includes(action.post)) {
return [...state, action.post];
}
return state;
case 'REMOVE_POST':
return state.filter(post => post === action.post);
default: return state;
}
}
答案 0 :(得分:0)
您应该可以通过为cardReducer
操作向您的LOGOUT
添加一个案例来做到这一点。注销时将触发它,并且您可以重置为[]
。例如
case 'LOGOUT':
return initState;
答案 1 :(得分:0)
您必须在cardReducer中添加另一种情况来清除购物车。
case 'CLEAR_CART':
return initState;
我假设您也有一个购物车操作文件,在其中定义了一个清除购物车的操作
export const clearCart = () => {
return (dispatch) => {
dispatch({ type: 'CLEAR_CART' })
}
}
然后将该动作导入到您的auth Actions文件中,然后调用该动作。
import { clearCart } from '..Cart Actions Path';
export const signOut = () => {
return (dispatch, getState, {getFirebase}) => {
const firebase = getFirebase();
const card = getState().card
firebase.auth().signOut().then(() => {
dispatch({ type: 'SIGNOUT_SUCCESS', card })
clearCart();
});
}
}