У меня есть простая форма в response-redux, предназначенная для попытки добавить пользователя в базу данных, если она прошла успешно, отобразить сообщение об успехе.Однако я не уверен в лучшем подходе для этого.У меня есть следующее:
onSubmit = e => {
...
const newUser = { user object here }
this.props.registerUser(newUser);
}
в componentWillReceiveProps(nextProps)
:
if (nextProps.success === true) {
this.setState({ success: nextProps.success });
}
в render()
: Предназначено для отображения компонента успеха с дополнительной информацией.Существует также условная проверка, чтобы скрыть форму, если успех равен true
{ this.state.success === true &&
(<SuccessComponent name={this.state.name} />)
}
в mapStateToProps
:
const mapStateToProps = state => ({
success: state.success
});
в моем action
:
.then(res => {
dispatch({
type: REGISTRATION_SUCCESS,
payload: true
});
})
в reducer
:
const initialState = false;
export default function(state = initialState, action) {
switch (action.type) {
case REGISTRATION_SUCCESS:
return action.payload;
default:
return state;
}
}
в combineReducers
:
export default combineReducers({
success: successReducer
});
В этом я в основном использую ответ от сервера для отправки успехаподдержать компонент, обновить состояние, которое заставляет реагировать на рендеринг, и снова пройти через условный оператор, скрывая форму и отображая новый блок успеха.
Тем не менее, когда я вхожу в инструменты для создания избыточного кода, я вижу, что состояние из хранилища теперь true
и остается таким, если пользователи уходят.Есть ли лучший способ достичь этой цели?Я нахожу, что, возможно, это должно быть изолировано для самого состояния компонента, но я не уверен, как это сделать, так как действие и, следовательно, ответ сервера происходит через избыточный код.