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