У меня проблема с состоянием сортировки.
Я хотел бы установить сортировку столбцов по возрастанию каждый раз, когда я изменяю выбор своего столбца и меняю состояние как «как c», а затем «des c» и c.
Когда я нажимаю на тот же столбец. Метод getHeaderName возвращает фактически выбранное имя заголовка и работает правильно. Метод sortedMethod просто имеет механизм сортировки (работает хорошо) и устанавливает состояние имени столбца, ранее выбранного и фактически выбранного:
private sortedMethod(columnName: HeaderNameDictionary) {
this.sortedMechanism(columnName);
this.setState({ previousColumn: this.state.sortedColumnName })
this.setState({ sortedColumnName : columnName})
}
Я думаю, что проблема заключается в методе "setStateSelectedColumn". В этом методе я проверяю состояние текущих и предыдущих имен столбцов и в зависимости от него устанавливаю состояние «isAscending». Но это не работает хорошо.
private setStateSelectedColumn(columnName: HeaderNameDictionary) {
if ((this.state.previousColumn !== this.state.sortedColumnName )) {
this.setState({ isAscending: true })
} else {
this.setState({ isAscending: !this.state.isAscending })
}
}
Когда я меняю столбец и щелкаю каждый раз на другом столбце, он работает хорошо и
меняет состояние как есть c: true,
, но когда я :
изменить столбец - isAs c: true,
Нажмите еще раз на этот столбец - isAs c: true,
Нажмите еще раз на этот столбец - As As c: false ,
Щелкните еще раз по этому столбцу - как As c: true,
Щелкните еще раз по этому столбцу - как As c: false,
Второй щелчок по тому же столбец проблематичен c и не меняет состояние.
<th>
Product Code
<span
className={this.getHeaderName(HeaderNameDictionary.PRODUCT_CODE)}
onClick={() => {
this.setState({}, () => {
this.setStateSelectedColumn(HeaderNameDictionary.PRODUCT_CODE);
});
this.sortedMethod(HeaderNameDictionary.PRODUCT_CODE);
}}
/>
</th>;
У вас есть идеи, как это исправить? Спасибо!