【问题标题】:How to make react-admin resource route default to show instead of edit?如何使 react-admin 资源路由默认显示而不是编辑?
【发布时间】:2018-11-29 22:45:50
【问题描述】:

react-admin 文档将资源的默认路由解释为:

  • /posts/:id 映射到 PostEdit
  • /posts/:id/show 映射到 PostShow

我希望我的应用默认为查看,并且仅在用户单击编辑图标时才允许编辑。然而,所有参考链接的默认值是指向/resource/:id。

有没有办法交换路由,使/resource/:id 映射到 Show,/resource/:id/edit 用于 Edit?或者也许将参考链接更改为/resource/:id/show?

【问题讨论】:

  • 其映射符合标准 API 路由最佳实践,您为什么要更改它?如果您希望非标准 /posts/:id 映射显示,然后更改 api 端的路由。

标签: react-admin


【解决方案1】:

这可能不是你要找的东西,但是可以切换默认操作,所以点击项目会导致show而不是edit: https://marmelab.com/react-admin/List.html#the-datagrid-component

export const PostList = (props) => (
    <List {...props}>
        <Datagrid rowClick="show">
            ...
        </Datagrid>
    </List>
);

【讨论】:

  • 这不是解决方案。如果我在地址栏上手动输入 /{resource}/{id} 它会路由到显示页面而不是编辑页面。
【解决方案2】:

通过将link="show" 添加到ReferenceField,可以将参考链接设置为参考“show”。

见https://github.com/marmelab/react-admin/issues/247#issuecomment-287819508

【讨论】:

  • 其实应该是link="show"而不是linkType="show",因为The 'linkType' prop is deprecated and should be named to 'link' in &lt;ReferenceField /&gt;。更新了答案。
【解决方案3】:

您可能希望创建一些符合您需要的自定义路由,重定向到自定义创建/显示组件,例如

const customRoutes = [
  <Route key="editPost" exact path="/posts/:id" component={PostEdit} />,
  <Route key="showPost" exact path="/posts/:id/show" component={PostShow} />,
];

function App() {
  return (
    <Admin
      ...
      customRoutes={customRoutes}
    >
    ...
    </Admin>
  )
}

来源:https://marmelab.com/react-admin/Admin.html#customroutes

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-02
    • 2020-08-24
    • 2017-01-17
    • 2012-07-27
    • 2016-06-30
    • 2014-12-24
    • 2015-09-26
    • 2021-01-19
    相关资源
    最近更新 更多