Reactjs 如何正确地在show页面上实现变异,而不是对react admin上的当前资源执行变异

Reactjs 如何正确地在show页面上实现变异,而不是对react admin上的当前资源执行变异,reactjs,react-admin,Reactjs,React Admin,我有显示页面,此页面应该从其资源加载数据,但此页面不应该更新此资源。此页面不应更新当前资源的项,而应进行不同的更改。例如,我有用户资源,我有mywebsite.com/users/uniq-user-id/show页面。我可以在这个页面上看到用户。但当我按下按钮时,请求不应该转到用户资源,也不应该改变用户资源。相反,这种变异应该去(例如音乐)并在那里执行变异。我可以使用这个钩子,但我不确定使用这个钩子并把它按到按钮上是最好的解决方案。react-admin是否已经为此特定案例创建了组件?我认为r

我有显示页面,此页面应该从其资源加载数据,但此页面不应该更新此资源。此页面不应更新当前资源的项,而应进行不同的更改。例如,我有用户资源,我有mywebsite.com/users/uniq-user-id/show页面。我可以在这个页面上看到用户。但当我按下按钮时,请求不应该转到用户资源,也不应该改变用户资源。相反,这种变异应该去(例如音乐)并在那里执行变异。我可以使用这个钩子,但我不确定使用这个钩子并把它按到按钮上是最好的解决方案。react-admin是否已经为此特定案例创建了组件?

我认为react-admin没有此类自定义组件,并且同意使用这些组件

您可以通过代理来拦截数据提供程序请求,并重新路由用户:

v2

v3


谢谢你的帮助!解决方案是使用react最终表单创建页面并手动收集数据。
import { UPDATE, UPDATE_MANY } from 'react-admin'

const routerDataProvider = dataProvider => (verb, resource, params) => {
    if ((verb === UPDATE || verb === UPDATE_MANY) && resource === 'users') {
        resource === 'music'
        //transform params to match music resource expected format 
    }
    return dataProvider(verb, resource, params)
}
const routerDataProvider = dataProvider => ({
    ...dataProvider,
    update: (resource, params) => 
        dataProvider(resource === 'users' ? 'music' : resource, params),
    updateMany: (resource, params) =>
        dataProvider(resource === 'users' ? 'music' : resource, params),
})