formSubmit
части моей среагировать формы компоненты, как показано ниже:POST в среагировать/Redux среды - как получить вернулся `_id` перенаправлять
handleFormSubmission = (e) => {
if (e) e.preventDefault()
const { showErrors, validationErrors, ...formData } = this.state
const { submitForm, router } = this.props
const errors = run(formData, fieldValidations)
let newState = update(this.state, {
validationErrors: { $set: errors }
})
this.setState(newState,() => {
if (isEmpty(this.state.validationErrors)) {
// submitForm is an dispatches a redux action
submitForm(formData)
if (formData._id) {
// the below is good on a PUT request
router.push(`/accounts/lodgedocket/${formData._id}`)
} else router.push(`/accounts/lodge`)
// with the else above I have no _id to redirect to
} else this.matterno.focus()
})
submitForm
является рассылает действие Redux, который затем затем take
п от Redux-саге
const { payload } = yield take(constants.SUBMIT_LODGE_FORM)
проблема заключается в том, что я не знаю, как поднять на новый _id
после запроса POST успешно завершен. Следует ли перенаправить URL-адрес в файл действия или в компонент?
Возможно, это так, что я должен указать push
url из действия, но я тоже не могу понять это.
Я использую реакторы, редукты, реагирующие-редукты и реакционно-редукционный маршрутизатор.
спасибо
спасибо за ваши комментарии. запрос xhr отправляется через саунд-релиз. Здесь можно перенаправить с возвращенным новым _id, который я не могу понять. – Joe
Вы можете передать действие маршрутизатора redux в полезной нагрузке SUBMIT_LODGE_FORM и отправить из саги после ответа на вызов Ajax. –
Или отправьте push (<ваш маршрут с id>) непосредственно из саги. –