我尝试扩展数据表组件(材料表)以使其可翻译。它使用自己的组件作为ActionComponent道具,其中有一些我喜欢翻译的字符串。
我扩展了MTablePagination组件,以使用来自名为localization的道具的转换后的字符串,但是我无法使用它。使用Material-ui withStyles方法将MTablePagination组件作为临时导出。
如果我尝试使用扩展组件,则会导致以下错误消息:

Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got:
<WithStyles(MTablePaginationInner) />. Did you accidentally export a JSX literal instead of a component?


原始的TablePagination组件的用法如下:

import MTablePagination from './m-table-pagination';
<TablePagination
  ...
  ActionsComponent={MTablePagination}
/>


在我尝试使用扩展组件的地方:

import MTablePagination from './m-table-pagination';
const localization={someKey: 'some value'};
const pagination = <MTablePagination localization={localization}/>
<TablePagination
  ...
  ActionsComponent={pagination}
/>


我对material-ui还是很陌生,我想我误会了一些东西,但是我在文档中找不到任何指向我正确方法的东西...
赋予ActionComponent道具的正确方法是什么?

最佳答案

我必须再次回答我的问题之一...材质表已通过图标道具得到增强,这与向ActionComponent道具添加自定义道具的需求相同。

他们使用组件作为函数来解决它,例如:

ActionsComponent={(subProps) => <MTablePagination {...subProps} icons={props.icons}/>}


我将尝试调整此解决方案...

-编辑:添加最终代码-

import MTablePagination from './m-table-pagination';
const localization={someKey: 'some value'};
const pagination = <MTablePagination localization={localization}/>
<TablePagination
  ...
  ActionsComponent={(subProps) => <MTablePagination {...subProps} icons={props.icons} localization={localization}/>}
/>

10-06 04:22