Javascript 返回的数据在react中未定义

Javascript 返回的数据在react中未定义,javascript,reactjs,Javascript,Reactjs,我正试图通过react路由器将数据传递到组件。我已经测试了端点是否正常工作,因此这不是服务器问题 这是我的函数,应该根据ID参数获取页面数据: instance.get(`/admin/page/${id}`).then((response) => { return response.data }).catch((error) => { console.log(error) }) } 我的反应路线是: <Route

我正试图通过react路由器将数据传递到组件。我已经测试了端点是否正常工作,因此这不是服务器问题

这是我的函数,应该根据ID参数获取页面数据:

    instance.get(`/admin/page/${id}`).then((response) => {
      return response.data
    }).catch((error) => {
      console.log(error)
    })
  }
我的反应路线是:

    <Route path="/admin/edit-page/:id" render={ (props) => (
      <AddEditPage {...props} page={this.setPage(props.match.params.id)} />
    )} />

在您的示例中,
this.setPage()
是一个异步函数。因此,返回值将是未定义的。有几种不同的方法可以解决这个问题。一种方法是设置“页面”的方式与设置“页面”的方式相同。也就是说,使用state。

在您的示例中,
this.setPage()
是一个异步函数。因此,返回值将是未定义的。有几种不同的方法可以解决这个问题。一种方法是设置“页面”的方式与设置“页面”的方式相同。也就是说,使用state。

看起来像是在调用函数,而不是传递对它的引用:

 page={this.setPage(props.match.params.id)}  
这几乎肯定不是您想要做的。

看起来您正在调用一个函数,而不是传递对它的引用:

 page={this.setPage(props.match.params.id)}  

这几乎肯定不是你想做的。

经过几个小时的尝试,我终于成功了。这就是为什么

我决定使用状态中已经存储的页面数据,而不是进行另一个API调用。我将其作为道具传递到编辑页面:

    <Route path="/admin/edit-page/:id" render={ (props) => (
      <AddEditPage {...props} pages={this.state.pages} />
    )} />

我仍然不知道什么是更好的速度智能虽然。重复使用状态中的数据,或对单个对象进行另一个api调用。

经过几个小时的尝试,我终于让它工作了。这就是为什么

我决定使用状态中已经存储的页面数据,而不是进行另一个API调用。我将其作为道具传递到编辑页面:

    <Route path="/admin/edit-page/:id" render={ (props) => (
      <AddEditPage {...props} pages={this.state.pages} />
    )} />

我仍然不知道什么是更好的速度智能虽然。重新使用状态中的数据,或对单个对象进行另一个api调用。

我确实尝试过,但无法访问函数或构造函数中的this.props.match.params.id。设置页面是否需要位于应用程序级别?它能在AddEditPage中吗?嗯,我想是的,但是我必须再次包括axios。那有关系吗?我认为将其放在应用程序容器中会很好。我确实尝试过,但无法访问函数或构造函数中的this.props.match.params.id。设置页面是否需要位于应用程序级别?它能在AddEditPage中吗?嗯,我想是的,但是我必须再次包括axios。那有关系吗?我想把它放在应用程序容器中会很好。