Почему forceUpdate не работает после нажатия кнопки? - PullRequest
0 голосов
/ 18 октября 2019

Я делаю небольшой проект, использующий ag-agrid, и пытаюсь его перевести.

Моя цель - когда пользователь нажимает кнопку, он меняет язык и для изменения языка страница должнаобновляться

при нажатии на кнопку:

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>
);
}

Я что-то не так делаю, когда использую forceUpdate?

codeSandBox

Примечание: pt и enданные из файла json

1 Ответ

1 голос
/ 20 октября 2019

Вы можете запустить повторную визуализацию, добавив свойство key в сочетании с this.state.language к компоненту AgGridReact вместо использования this.forceUpdate(). Это должно вызвать повторную визуализацию, когда вы меняете язык с помощью нажатия кнопки:

<AgGridReact
  key={this.state.language}
  ... other props
/>

Вот пример в действии.

Я не вижулюбые проблемы с вашим кодом, это похоже на проблему с компонентом сетки, который не может быть обновлен. Вы корректно обновляете состояние.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...