La partie formSubmit
de ma réaction composante de forme est comme ci-dessous:requête POST dans une réaction/environnement redux - comment se retourne `_id` pour rediriger
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
est une dépêche une action Redux, qui a ensuite est alors n take
par Redux-saga
const { payload } = yield take(constants.SUBMIT_LODGE_FORM)
le problème est que je ne sais pas comment prendre la nouvelle _id
après la requête POST a terminé avec succès. La redirection d'URL doit-elle avoir lieu dans le fichier d'action ou dans le composant?
Peut-être que c'est le cas que je devrais push
l'url de l'action, mais je ne peux pas comprendre cela non plus. J'utilise reactjs, redux, react-redux et react-redux-router.
merci
Merci pour vos commentaires. la requête xhr est envoyée via redux-saga. C'est où rediriger avec le nouveau _id que je ne peux pas comprendre. – Joe
Vous pouvez passer l'action du routeur redux dans la charge SUBMIT_LODGE_FORM et la distribuer à partir de la saga après la réponse d'appel Ajax. –
Ou envoyez push () directement à partir de la saga. –