Reactjs React Redux中的错误处理
我读过一些关于redux中错误的Qestion,但仍然不太理解它 例如,在我的应用程序中,我有Reactjs React Redux中的错误处理,reactjs,redux,Reactjs,Redux,我读过一些关于redux中错误的Qestion,但仍然不太理解它 例如,在我的应用程序中,我有activeUserreducer,其中我存储了null或object,并记录了用户。它侦听操作,并根据需要更改其状态。简单 但是错误缩减器应该如何工作和外观呢 我用这种方式减少了我的错误: 我有一个error/index.js文件,其中存储了所有错误减少器: import * as actionTypes from '../../constants' export const wrongUserna
activeUser
reducer,其中我存储了null
或object
,并记录了用户。它侦听操作
,并根据需要更改其状态。简单
但是错误
缩减器应该如何工作和外观呢
我用这种方式减少了我的错误:
我有一个error/index.js
文件,其中存储了所有错误减少器:
import * as actionTypes from '../../constants'
export const wrongUsername = (state = false, action) => {
switch (action.type) {
case actionTypes.WRONG_USERNAME:
return state = true
case actionTypes.RESET_ERRORS:
return state = false
default:
return state
}
}
export const wrongPassword = (state = false, action) => {
switch (action.type) {
case actionTypes.WRONG_PASSWORD:
return state = true
case actionTypes.RESET_ERRORS:
return state = false
default:
return state
}
}
export const usernameIsTaken = (state = false, action) => {
switch (action.type) {
case actionTypes.USERNAME_IS_TAKEN:
return state = true
case actionTypes.RESET_ERRORS:
return state = false
default:
return state
}
}
这是我的还原程序/index.js
文件,当我合并所有还原程序时:
const reducers = combineReducers({
activeUser,
viewableUser,
isLoading,
isFriend,
userMessages,
users,
wasRequestSend,
wrongUsername,
wrongPassword,
usernameIsTaken
})
这是否正常?我是否应该更改我的错误减少器的结构?您需要创建一些js文件,如下所示:
export default {
loginFailed : 'Username or Password is wrong'
}
并在存储
中生成状态消息,然后像这样将错误消息传递给存储
import ErrorCost from './somerror.js'
export const wrongPassword = (state = false, action) => {
switch (action.type) {
case actionTypes.WRONG_PASSWORD:
return {
error : true,
message : ErrorCost.loginFailed
}
default:
return state
}
}
您需要创建一些js文件,如下所示:
export default {
loginFailed : 'Username or Password is wrong'
}
并在存储
中生成状态消息,然后像这样将错误消息传递给存储
import ErrorCost from './somerror.js'
export const wrongPassword = (state = false, action) => {
switch (action.type) {
case actionTypes.WRONG_PASSWORD:
return {
error : true,
message : ErrorCost.loginFailed
}
default:
return state
}
}
状态可以是对象,所以在状态为对象的情况下,只能执行一个用户缩减器
减速器返回实体的新状态。所以你可以这样写:
export const wrongUsername = (state = false, action) => {
switch (action.type) {
case actionTypes.WRONG_USERNAME:
return true
case actionTypes.RESET_ERRORS:
return false
default:
return state
}
}
您不应该在reducer(或其他地方)中改变状态
所以,将状态作为对象,可以使用比使用逻辑更少的约简
例如:
const initialState = {
currentUser: null,
users: [],
isLoading: false, // I assume it is for display a spinner
}
export default userReducer = (state = initialState, action) {
switch(action.type) {
case SET_CURRENT_USER:
return {
...state,
currentUser: action.currentUser,
}
case ADD_USER:
return {
...state,
users: [...state.users, action.user]
}
case SET_IS_LOADING:
return {
...state,
isLoading: action.isLoading
}
default:
return state
}
}
您的减速器应该表示一个实体。
因此,为了回答您的问题,有几种处理redux错误的方法。如果要在表单中显示错误,可以使用redux表单。否则,您可以将错误存储在对象状态中,并在需要时重置它
但最好的选择是使用一个向用户显示错误的模块。因此,当您捕获错误时,可以显示它。(react-redux-toastr,这很管用)。状态可以是对象,因此在状态是对象的情况下,只能执行一个用户还原
减速器返回实体的新状态。所以你可以这样写:
export const wrongUsername = (state = false, action) => {
switch (action.type) {
case actionTypes.WRONG_USERNAME:
return true
case actionTypes.RESET_ERRORS:
return false
default:
return state
}
}
您不应该在reducer(或其他地方)中改变状态
所以,将状态作为对象,可以使用比使用逻辑更少的约简
例如:
const initialState = {
currentUser: null,
users: [],
isLoading: false, // I assume it is for display a spinner
}
export default userReducer = (state = initialState, action) {
switch(action.type) {
case SET_CURRENT_USER:
return {
...state,
currentUser: action.currentUser,
}
case ADD_USER:
return {
...state,
users: [...state.users, action.user]
}
case SET_IS_LOADING:
return {
...state,
isLoading: action.isLoading
}
default:
return state
}
}
您的减速器应该表示一个实体。
因此,为了回答您的问题,有几种处理redux错误的方法。如果要在表单中显示错误,可以使用redux表单。否则,您可以将错误存储在对象状态中,并在需要时重置它
但最好的选择是使用一个向用户显示错误的模块。因此,当您捕获错误时,可以显示它。(react-redux-toastr,这很有效)。您可以创建一个通用减缩器,用于状态为专用标志的错误处理。无需多个通用减缩器。您可以创建一个通用减缩器,用于状态为专用标志的错误处理。无需多个通用减缩器