Javascript 为什么forceUpdate没有';单击按钮后无法工作?
我正在用ag agrid做一个小项目,我正在尝试翻译它 我的目标是当用户点击一个按钮时,它会改变语言,而要改变语言,页面必须刷新 单击按钮时:Javascript 为什么forceUpdate没有';单击按钮后无法工作?,javascript,reactjs,ag-grid,ag-grid-react,Javascript,Reactjs,Ag Grid,Ag Grid React,我正在用ag agrid做一个小项目,我正在尝试翻译它 我的目标是当用户点击一个按钮时,它会改变语言,而要改变语言,页面必须刷新 单击按钮时: changeLanguage(lang) { this.setState({language: lang}, this.forceUpdate()); } 问题是: forceUpdate()不工作 渲染和施工人员: constructor(props) { super(props); this.state ={
changeLanguage(lang) {
this.setState({language: lang},
this.forceUpdate());
}
问题是:
forceUpdate()不工作
渲染和施工人员:
constructor(props) {
super(props);
this.state ={
language: 'pt'
}
this.changeLanguage = this.changeLanguage.bind(this);
}
render() {
return (
<div className="ag-theme-balham" style={{ height: '700px', width: '95%' }}>
<Row>
<Button onClick={() => this.changeLanguage('pt')}> PT </Button>
<Button onClick={() => this.changeLanguage('en')}> EN </Button>
</Row>
<br/>
<AgGridReact
//props of grid
localeText={this.state.language === 'pt' ? pt : en}
/>
</div>
);
}
构造函数(道具){
超级(道具);
这个州={
语言:“pt”
}
this.changeLanguage=this.changeLanguage.bind(this);
}
render(){
返回(
this.changeLanguage('pt')}>pt
this.changeLanguage('en')}>en
注意:pt和en是来自json文件的数据您可以通过将键
属性与this.state.language
组合添加到AgGridReact
组件而不是使用this.forceUpdate()
来触发重新渲染。当您通过按钮单击更改语言时,这将导致重新渲染:
<AgGridReact
key={this.state.language}
... other props
/>
正在运行
我看不到您的代码有任何问题,这似乎更像是网格组件无法更新的问题。您正在正确更新状态
希望这会有所帮助!您可以通过将键
属性与this.state.language
组合添加到AgGridReact
组件,而不是使用this.forceUpdate()
来触发重新渲染。当您通过单击按钮更改语言时,应该会导致重新渲染:
<AgGridReact
key={this.state.language}
... other props
/>
正在运行
我看不到您的代码有任何问题,这似乎更像是网格组件无法更新的问题。您正在正确更新状态
希望这会有帮助!您在哪里使用这个.state.language
?它是否被传递到AgGridReact
?您如何知道状态。语言没有被更新?请更新问题以准确显示您是如何使用状态的。language
@AlexanderStaroselsky language处于这个组件的状态entRight,您表示除非更新页面,否则不会看到任何更新。您的代码不会显示任何地方正在使用或传递的this.state.language
。请尝试了解您是如何确切地知道this.state.language
没有被this.setState({language:lang})更新的
以及为什么您觉得需要forceUpdate()
。同样在您的示例中this.setState({language:lang},
语法不正确,缺少结尾括号)
逗号是额外的,但可能是复制/粘贴的error@AlexanderStaroselsky状态正在改变,我在控制台中看到,唯一不起作用的是forceUpdate,它不会重新渲染。你说AgGridReact
在this.state.language
值更新时不会重新渲染吗?你到底在哪里使用>此.state.language
?是否正在将其传递给AgGridReact
?您如何知道状态。语言
未被更新?请更新问题以准确显示您是如何使用状态的。语言
@AlexanderStaroselsky language处于此组件的状态。对,您表示没有看到任何updates,除非您更新页面。您的代码不会显示任何地方使用或传递的this.state.language
。请尝试了解您是如何确切地知道this.state.language
没有被this.setState({language:lang})
更新的,以及您为什么感觉forceUpdate()
是必需的。在您的示例中,this.setState({language:lang},
语法不正确,缺少结尾括号)
逗号是额外的,但可能是复制/粘贴的error@AlexanderStaroselsky状态正在更改,我在控制台中看到,唯一不起作用的是不重新渲染的forceUpdate。您说AgGridReact
在更新此.state.language
值时不重新渲染吗?非常感谢您的帮助感谢您的时间!这是我搜索并尝试了许多其他方法解决此类问题后的正确工作答案…谢谢!非常感谢您的帮助和时间!这是我搜索并尝试了许多其他方法解决此类问题后的正确工作答案…谢谢!