Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs react/redux环境中的POST请求-如何将返回的“\u id”重定向_Reactjs_React Redux_React Router Redux_Redux Saga - Fatal编程技术网

Reactjs react/redux环境中的POST请求-如何将返回的“\u id”重定向

Reactjs react/redux环境中的POST请求-如何将返回的“\u id”重定向,reactjs,react-redux,react-router-redux,redux-saga,Reactjs,React Redux,React Router Redux,Redux Saga,my react表单组件的formSubmit部分如下所示: handleFormSubmission = (e) => { if (e) e.preventDefault() const { showErrors, validationErrors, ...formData } = this.state const { submitForm, router } = this.props const errors = run(formData, fieldValidatio

my react表单组件的
formSubmit
部分如下所示:

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操作的方法,然后由redux saga执行
take
n

const { payload } = yield take( constants.SUBMIT_LODGE_FORM )
问题是,在POST请求成功完成后,我不知道如何获取新的
\u id
。url是否应该在操作文件或组件中重新定向

也许是这样的情况,我应该
从操作中推送
url,但我也无法理解这一点

我正在使用reactjs、redux、react-redux和react-redux路由器


谢谢

您应该再添加一些代码。无论如何,它看起来不像真正的惯用redux

如果你在做Ajax调用,你应该有一个中间件,比如redux thunk。它将在Ajax回调中调度一个操作。该操作将包含服务器响应,并由还原程序处理。您将获得一个id为的新状态,因此一个新的组件渲染将在props中获得它

更新:

由于您使用的是redux saga中间件,因此只需在saga Ajax回调中执行对react router redux action creator的调用即可。文件在此:

请确保为路由器中间件从react router导入browserHistory

import { browserHistory } from 'react-router'
const middleware = routerMiddleware(browserHistory)

问题实际上是从哪里发送更改url的操作。答案来自乔治·博齐奥的回答,然后:

  • -是更改url的三种方法

  • 具体来说,我使用了来自“react router redux”的
    import{push}

  • 但是我遇到了一个关于如何配置中间件的问题,这个链接为我解决了这个问题:


  • 谢谢你的评论。xhr请求通过redux saga发送。这是使用返回的新id重定向的地方,我无法理解。您可以在提交表单有效负载中传递redux路由器操作,并在Ajax调用响应后从saga中发送。或者直接从saga中发送push()。