如何将react-admin List组件的额外参数传递给dataProvider的getList
问题原因
react-admin 的 <List> 组件默认只会透传 filter、sort、perPage、page 四个标准参数给 dataProvider 的 getList 方法,自定义的额外属性不会被默认传递,所以直接写 myArgs={someArgs} 是拿不到的。
解决方案
方案1:使用官方支持的 meta 属性透传(推荐)
react-admin 3.x 及以上版本内置支持 <List> 组件传入 meta 参数,所有放在 meta 中的自定义内容都会完整透传给 dataProvider 对应方法的入参中:
- 调整
<List>组件写法:
<List filter={myFilters} perPage={10} meta={{ myArgs: someArgs }} {...props} > {/* 列表内部内容 */} </List>
- 在自定义 dataProvider 的
getList方法中直接读取:
const myDataProvider = { getList: async (resource, params) => { const { myArgs } = params.meta || {} // 这里可以拿到你的自定义参数,后续正常处理请求逻辑即可 // ... }, // 其他dataProvider方法 }
方案2:合并到filter参数传递
如果你的后端要求自定义参数和过滤参数在同一请求层级,也可以直接把自定义参数合并到filter中:
<List filter={{ ...myFilters, myArgs: someArgs }} perPage={10} {...props} >
然后在dataProvider中从params.filter中提取myArgs即可,注意不要和现有过滤字段重名。
内容的提问来源于stack exchange,提问作者Tohmaxxx
相关产品推荐
相关产品推荐

