Там довольно много кода, и нет рабочего примера, поэтому я могу ошибаться, но я думаю, что проблема в getSortedData()
: в этой функции вы вызываете setState()
и сразу после вызова getData()
, который выполнитвыборка, которая использует функцию ulrParams()
, которая использует свойство this.state.sortedData
.
Проблема в том, что setState()
является асинхронным, поэтому не уверен, что, когда urlParams()
использует this.state.sortedData
,свойство обновлено (на самом деле, мы уверены, что оно не обновлено).
Попробуйте переписать getSortedData()
следующим образом:
getSortedData =() => {
this.setState({sortedData:'name desc'}, () => {
this.getData();
})
}
То, что я здесь делаю, передаю обратный вызовsetState()
: при этом getData()
будет называться ПОСЛЕ того, как вы обновили состояние.
Что касается вопроса, который вы задали в комментарии, если вы хотите переключить порядок, вы можетедобавьте свойство order
в состояние Компонента, присвоив ему значение по умолчанию 'name desc'
.
Затем измените getSortedData
следующим образом:
getSortedData =() => {
let newSort = 'name asc';
if (this.state.sorteData === newSort) 'name desc';
this.setState({sortedData: newSort}, () => {
this.getData();
})
}