【问题标题】:Admin-on-REST: Nested Create-Route not working?Admin-on-REST:嵌套创建路由不起作用?
【发布时间】:2017-07-10 14:58:02
【问题描述】:

我当前的设置如下所示:

httpClient.js:

import { fetchUtils } from 'admin-on-rest'

const HttpClient = (url, options = {}) => {
    if (!options.headers) {
        options.headers = new Headers({ Accept: 'application/json' })
    }

    // ...handle authorization and set some header

    return fetchUtils.fetchJson(url, options)
}

export default HttpClient

restClient.js

import { jsonServerRestClient } from 'admin-on-rest'
import HttpClient from './httpClient.js'

export default jsonServerRestClient('', HttpClient)

...所以我在那个部门很基础。

我现在有几条 路线,如下所示:

<Route exact path="/stream" render={(routeProps) => <StreamList hasCreate resource="stream" {...routeProps} />} />,
<Route exact path="/stream/create" render={(routeProps) => <StreamCreate resource="stream" {...routeProps} />} />,
<Route exact path="/stream/:id" render={(routeProps) => <StreamEdit hasDelete resource="stream" {...routeProps} />} />,
<Route exact path="/stream/:id/delete" render={(routeProps) => <Delete resource="stream" {...routeProps} />} />,
<Route exact path="/stream/query/:id" component={StreamQueryEdit} />,

...这一切都非常标准并且工作正常。

我的问题现在是我有另一条路线 /config/what,我想为其中一个资源提供嵌套路线。路由如下所示:

<Route exact path="/config/how/antonym" render={(routeProps) => <AntonymList hasCreate resource="antonym" {...routeProps} />} />
<Route exact path="/config/how/antonym/create" render={(routeProps) => <AntonymCreate resource="antonym" {...routeProps} />} />
<Route exact path="/config/how/antonym/:id" render={(routeProps) => <AntonymEdit resource="antonym" {...routeProps} />} />
<Route exact path="/config/how/antonym/:id/delete" render={(routeProps) => <Delete resource="antonym" {...routeProps} />} />

/config/how/ 内部,这些嵌套路由呈现如下:

if (this.props.children) {
    return this.props.children
}

List-、Edit- 和 Delete-Route 都按预期工作。唯一的问题是,一旦我导航到 Create-Route,我就会从服务器收到 500 错误。

事实证明,经过一番调查,框架并没有将此路由识别为创建路由,而是将其视为对“create”id 的GET 请求。

这是我跟踪问题的原因:

这表明出于某种原因 admin-on-rest 将此请求视为 GET 请求。这也导致代码通过Edit.js(而不是“创建”?)我真的不知道为什么。

我试图找到设置 type 参数的位置,以查看可能导致此行为的原因......但到目前为止还没有运气。

在这些情况下,列表和编辑路径都可以正常工作,这尤其奇怪。这只是创建路线...

【问题讨论】:

  • 应该在 aor github 页面上询问错误报告。在那里提出问题
  • 嗨@kunalpareek ...好吧,老实说,我不确定这是一个实际的错误还是我在这里做错了什么...
  • 我自己在嵌套路由方面遇到了一些问题。我通过在其余客户端中创建一个虚拟资源然后在那里设置正确的 URL 来解决它。
  • 他们关闭了问题并将我送回stackoverflow,甚至没有评论这是一个错误还是我做错了什么@kunalpareek:D
  • 是的,他们这样做非常慷慨:) 你应该看到法国人弗朗索瓦如何用滑稽的想法关闭窥视者。有时他们不会。认为这可能是其中之一。

标签: javascript reactjs admin-on-rest


【解决方案1】:

确保您的 AntonymCreate 组件具有如下形式:

export const AntonymCreate = (props) => (
    <Create {...props} title="Create">
    ...
    </Create>
);

这可能是它不起作用的原因。

【讨论】:

  • 您好,感谢您的建议。不幸的是,我的创建路线已经看起来像这样。由于我无法在评论中发布代码,因此我将提供屏幕截图:https://cdn.pbrd.co/images/GD8JoSK.png
猜你喜欢
  • 2018-03-17
  • 2023-03-15
  • 2016-07-28
  • 1970-01-01
  • 2015-11-25
  • 1970-01-01
  • 1970-01-01
  • 2011-10-10
  • 2017-10-04
相关资源
最近更新 更多