У меня возникли проблемы, обертывая вокруг меня голову. В принципе, у меня есть компонент, который тянет isFetching булево из состоянияРеагент Контейнер - состояние доступа от любого редуктора
function mapStateToProps(state){
const {errorMessage,isFetching} = state.signUp
const {isAuthenticated,username} = state.login;
return {
isAuthenticated,
errorMessage,
isFetching,
username
}
}
У меня есть ниже восстановителей
export const signUp = (state={},action) => {
switch(action.type){
case SIGNUP_REQUEST:
return Object.assign({},state,{
isFetching: true
})
case SIGNUP_FAILURE:
return Object.assign({},state,{
isFetching:false,
// isAuthenticated: false,
errorMessage: action.message
})
default:
return state
}
}
export const login = (state={isAuthenticated:false},action) => {
switch(action.type){
case LOGIN_REQUEST:
return Object.assign({},state,{
isFetching: true,
isAuthenticated: false
})
case LOGIN_SUCCESS:
return Object.assign({},state,{
isFetching:false,
isAuthenticated:true,
username: action.username
})
case LOGIN_FAILURE:
return Object.assign({},state,{
isFetching: false,
isAuthenticated: false,
errorMessage: action.message
})
default:
return state
}
}
когда я направить loginRequest - редуктор поворачивает isFetching к истине. но компонент все еще не обновляется, потому что он смотрит на переменную isFetching только из signUp Reducer.
Есть ли способ, которым я могу видеть компонент для обоих редукторов для переменной isFetching?
Предполагая, что вы использовали combineReducers, то 'state' что ваш' mapStateToProps' вызывается это комбинированное состояние, так да, ваш компонент может легко посмотреть состояние 'isLoading' в обоих редукторах. – aarosil
не означает, что состояние имеет два значения isFetching? один для регистрации и для входа? Я хотел бы знать, могу ли я иметь глобальную переменную isFetching, которая возвращает true при отправке запроса signUp или loginRequest. – Kannaj
'state' будет иметь два объекта:' signUp' и 'login', которые оба будут иметь' isFetching' boolean. Если вы хотите избежать этого, я бы просто сохранил все в одном редукторе и, вероятно, назвал новый редуктор «аутентификацией». Кроме того, вы можете иметь простую логику в 'mapStateToProps', например' const isFetching = signUp.isFetching || login.isFetching' и передать его. – Kujira