Javascript MUIDatable ReactJS中的标签文本未更新
我想在mui数据表中添加多语言选项。我可以更改翻译,但当我想更改语言时,我尝试使用其他翻译提供另一个对象(如果我使用控制台日志,我可以看到该对象的更改),但标签文本不会更改 我使用contextProvider来更改所选的语言,然后获得带有翻译的特定词典 是一个类组件,因此我使用正确的提供程序创建了一个静态contextType 是否有可能使用其他选项或类似的东西重新渲染元素Javascript MUIDatable ReactJS中的标签文本未更新,javascript,reactjs,material-ui,mui-datatable,Javascript,Reactjs,Material Ui,Mui Datatable,我想在mui数据表中添加多语言选项。我可以更改翻译,但当我想更改语言时,我尝试使用其他翻译提供另一个对象(如果我使用控制台日志,我可以看到该对象的更改),但标签文本不会更改 我使用contextProvider来更改所选的语言,然后获得带有翻译的特定词典 是一个类组件,因此我使用正确的提供程序创建了一个静态contextType 是否有可能使用其他选项或类似的东西重新渲染元素 options = { textLabels: this.context.translation.dataTables
options = {
textLabels: this.context.translation.dataTables.textLabels
};
return(
<MUIDataTable
title={this.context.language.value}
data={data}
columns={columns}
options={options}
/>
);
选项={
textLabels:this.context.translation.dataTables.textLabels
};
返回(
);
您可以强制React组件渲染:
- 强制React组件渲染的方法有多种,但本质上是相同的。第一种方法是使用
,它跳过this.forceUpdate()
:shouldComponentUpdate
someMethod(){
//强制渲染而不更改状态。。。
这个.forceUpdate();
}
- 假设您的组件具有状态,您还可以调用以下命令:
someMethod(){
//使用模拟状态更改强制渲染
this.setState({state:this.state});
}
使用选项中的customRowRender函数,并根据语言操作表
使用自定义函数替代默认行呈现
customRowRender(数据、数据索引、行索引)=>React组件重新呈现Mui数据表的最佳方法 key={this.context.language.value}
在MUIDataTable中,我们可以通过在MUIDataTableColumnDef选项中提供标签来覆盖标签名称,同时创建列 例如:
const columns: MUIDataTableColumnDef[] = [
{
name: 'Id',
label: 'ID',
options: {
download: false,
customBodyRenderLite: (index: number) => {
const desc: Description = evenMoreAbout[index]
return <BasicInfo obj={desc} setIconClicked={setIconClicked} />
}
}
},
{
name: 'id',
label: 'ID',
options: {
display: 'excluded',
download: true,
customBodyRender: desc => desc.id
}
}]
const columns:muidatablecolumndef[]=[
{
名称:“Id”,
标签:“ID”,
选项:{
下载:错,
customBodyRenderLite:(索引:编号)=>{
const desc:Description=evenMoreAbout[index]
返回
}
}
},
{
名称:“id”,
标签:“ID”,
选项:{
显示:“已排除”,
下载:对,
customBodyRender:desc=>desc.id
}
}]
即使我们仍然希望在使用CustomRender的某些数据条件下超越标签名称。。。我们可以像下面的例子
const columns: MUIDataTableColumnDef[] = [
{
name: 'Id',
label: '',
options: {
download: false,
customBodyRenderLite: (index: number) => {
const desc: Description = evenMoreAbout[index]
return <BasicInfo obj={desc} setIconClicked={setIconClicked} />
},
customHeadLabelRender: (dataIndex: number, rowIndex: number) => {
return 'ID';
}
}
}
]
const columns:muidatablecolumndef[]=[
{
名称:“Id”,
标签:“”,
选项:{
下载:错,
customBodyRenderLite:(索引:编号)=>{
const desc:Description=evenMoreAbout[index]
返回
},
customIndex:number,rowIndex:number)=>{
返回“ID”;
}
}
}
]
谢谢您的回答!。但是各州都在运作,我试着改变数据和标题,正如你所看到的,最后一个,随着上下文的变化而改变,它也在运作。但是我不能改变选项,我不明白为什么。谢谢你的回答!我只想更改textLabels选项。我可以更改数据道具和标题道具。但我不能改变选择道具