Javascript 从使用CombineReducer的Redux主状态中删除特定属性的正确方法-React Redux
我有一个应用程序,我想实施授权(注册,登录,注销)。我必须使用redux来实现这一点。 到目前为止,注册和登录工作得很好,但当用户单击注销按钮时,我应该删除已登录用户的数据时,我遇到了一些问题 我试图将登录和注销案例放在同一个reducer中,但是当用户登录时,我无法访问用户的数据,而不是只获取旧用户数据对象并返回空对象,而是将一个空对象添加到用户数据中 登录前我的重排状态:Javascript 从使用CombineReducer的Redux主状态中删除特定属性的正确方法-React Redux,javascript,reactjs,redux,react-redux,state,Javascript,Reactjs,Redux,React Redux,State,我有一个应用程序,我想实施授权(注册,登录,注销)。我必须使用redux来实现这一点。 到目前为止,注册和登录工作得很好,但当用户单击注销按钮时,我应该删除已登录用户的数据时,我遇到了一些问题 我试图将登录和注销案例放在同一个reducer中,但是当用户登录时,我无法访问用户的数据,而不是只获取旧用户数据对象并返回空对象,而是将一个空对象添加到用户数据中 登录前我的重排状态: export function userLoginSuccess(user) { return {
export function userLoginSuccess(user) {
return {
type: 'USER_LOGIN_SUCCESS',
user
}
}
export function userLogout() {
return {
type: 'USER_LOGOUT'
}
}
export function userLogin(state = {}, action) {
switch (action.type) {
case 'USER_LOGIN_SUCCESS':
localStorage.setItem('userToken', action.user.token);
return action.user;
case 'USER_LOGOUT':
localStorage.removeItem('userToken');
return {
...state,
userLogin: {}
}
default:
return state;
}
}
import { userLogin, companies, dataHaveError, dataIsLoading } from './redux/reducers';
const rootReducer = combineReducers({
companies,
userLogin,
dataHaveError,
dataIsLoading
})
const enhancer = applyMiddleware(thunk);
const store = createStore(rootReducer, {}, composeWithDevTools(enhancer));
登录后我的重复使用状态:
export function userLoginSuccess(user) {
return {
type: 'USER_LOGIN_SUCCESS',
user
}
}
export function userLogout() {
return {
type: 'USER_LOGOUT'
}
}
export function userLogin(state = {}, action) {
switch (action.type) {
case 'USER_LOGIN_SUCCESS':
localStorage.setItem('userToken', action.user.token);
return action.user;
case 'USER_LOGOUT':
localStorage.removeItem('userToken');
return {
...state,
userLogin: {}
}
default:
return state;
}
}
import { userLogin, companies, dataHaveError, dataIsLoading } from './redux/reducers';
const rootReducer = combineReducers({
companies,
userLogin,
dataHaveError,
dataIsLoading
})
const enhancer = applyMiddleware(thunk);
const store = createStore(rootReducer, {}, composeWithDevTools(enhancer));
注销后我的重新使用状态
以下是我的登录和注销操作:
export function userLoginSuccess(user) {
return {
type: 'USER_LOGIN_SUCCESS',
user
}
}
export function userLogout() {
return {
type: 'USER_LOGOUT'
}
}
export function userLogin(state = {}, action) {
switch (action.type) {
case 'USER_LOGIN_SUCCESS':
localStorage.setItem('userToken', action.user.token);
return action.user;
case 'USER_LOGOUT':
localStorage.removeItem('userToken');
return {
...state,
userLogin: {}
}
default:
return state;
}
}
import { userLogin, companies, dataHaveError, dataIsLoading } from './redux/reducers';
const rootReducer = combineReducers({
companies,
userLogin,
dataHaveError,
dataIsLoading
})
const enhancer = applyMiddleware(thunk);
const store = createStore(rootReducer, {}, composeWithDevTools(enhancer));
这是减速器:
export function userLoginSuccess(user) {
return {
type: 'USER_LOGIN_SUCCESS',
user
}
}
export function userLogout() {
return {
type: 'USER_LOGOUT'
}
}
export function userLogin(state = {}, action) {
switch (action.type) {
case 'USER_LOGIN_SUCCESS':
localStorage.setItem('userToken', action.user.token);
return action.user;
case 'USER_LOGOUT':
localStorage.removeItem('userToken');
return {
...state,
userLogin: {}
}
default:
return state;
}
}
import { userLogin, companies, dataHaveError, dataIsLoading } from './redux/reducers';
const rootReducer = combineReducers({
companies,
userLogin,
dataHaveError,
dataIsLoading
})
const enhancer = applyMiddleware(thunk);
const store = createStore(rootReducer, {}, composeWithDevTools(enhancer));
以下是使用组合减速机进行的存储初始化::
export function userLoginSuccess(user) {
return {
type: 'USER_LOGIN_SUCCESS',
user
}
}
export function userLogout() {
return {
type: 'USER_LOGOUT'
}
}
export function userLogin(state = {}, action) {
switch (action.type) {
case 'USER_LOGIN_SUCCESS':
localStorage.setItem('userToken', action.user.token);
return action.user;
case 'USER_LOGOUT':
localStorage.removeItem('userToken');
return {
...state,
userLogin: {}
}
default:
return state;
}
}
import { userLogin, companies, dataHaveError, dataIsLoading } from './redux/reducers';
const rootReducer = combineReducers({
companies,
userLogin,
dataHaveError,
dataIsLoading
})
const enhancer = applyMiddleware(thunk);
const store = createStore(rootReducer, {}, composeWithDevTools(enhancer));
我试图找到一个解决方案,但我发现没有
组合减速机
,他们使用initialState来解决这类问题,但在这种情况下,我是如何理解的,组合减速机
正在为每个减速机创建状态属性,因此我不知道如何处理此特定问题。我非常接近:D非常感谢!
export function userLogin(state = {}, action) {
switch (action.type) {
case 'USER_LOGIN_SUCCESS':
localStorage.setItem('userToken', action.user.token);
return action.user;
case 'USER_LOGOUT':
localStorage.removeItem('userToken');
return {} // return empty state
default:
return state;
}
}