如何在显示页面上正确实现突变,但不能在react-admin上实现当前资源

问题描述 投票:0回答:1

我有显示页面,此页面应从其资源中加载数据,但此页面不应更新此资源。代替更新当前资源的项目,此页面应进行不同的更改。因此,例如,我有users资源,并且我有mywebsite.com/users/uniq-user-id/show页面。我可以在此页面上看到用户。但是,当我按下按钮时-请求不应转到用户资源,也不应更改用户资源。取而代之的是,这种突变应该去(例如音乐)并在那里执行突变。我可以使用useMutation挂钩,但是我不确定使用此挂钩并将其放在按钮上-是最佳解决方案。 react-admin是否已针对此特定情况创建了组件?

reactjs react-admin
1个回答
0
投票

我认为react-admin没有这样的自定义组件,并且同意useMutation。

您可以通过传播dataProvider请求并重新路由用户变更来拦截它:

v2

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)
}

v3

const routerDataProvider = dataProvider => ({
    ...dataProvider,
    update: (resource, params) => 
        dataProvider(resource === 'users' ? 'music' : resource, params),
    updateMany: (resource, params) =>
        dataProvider(resource === 'users' ? 'music' : resource, params),
})
© www.soinside.com 2019 - 2024. All rights reserved.