每当登录失败时,我都希望在警报中显示从后端接收到的错误消息:
我的登录按钮从我的用户触发此功能。
function login(username, password) {
return dispatch => {
dispatch(request({ username }));
userService.login(username, password)
.then(
user => {
dispatch(success(user));
history.goBack();
},
error => {
dispatch(failure(error.toString()));
dispatch(alertActions.error(error.toString()));
}
);
};
function request(user) { return { type: userConstants.LOGIN_REQUEST, user } }
function success(user) { return { type: userConstants.LOGIN_SUCCESS, user } }
function failure(error) { return { type: userConstants.LOGIN_FAILURE, error } }
}
我的alert.reducer如下所示:
import { alertConstants } from '../_constants';
export function alert(state = {}, action) {
switch (action.type) {
case alertConstants.SUCCESS:
return {
type: 'alert-success',
message: action.message
};
case alertConstants.ERROR:
return {
type: 'alert-danger',
message: action.message
};
case alertConstants.CLEAR:
return {};
default:
return state
}
}
在我的App.js中,我通过mapStateToProps收到此状态:
function mapStateToProps(state) {
const { alert } = state;
return {
alert
};
}
在那之后,我想显示一个带有警报消息的警报:
{alert.message &&
alert(alert.message)
}
你能帮我吗?
答案 0 :(得分:1)
您的动作/减速器代码看起来还不错,我认为这可能与道具名称和本机警报功能发生冲突。 您是否尝试过更改道具名称?像这样:
print()
和
function mapStateToProps(state) {
const { alert } = state;
return {
alertState: alert
};
}