Я работаю в приложении SP Framework, которое читает, группирует и фильтрует данные из списка.
Для этого у меня в приложении есть метод, который вызывается из обработчика событий onclick.
Этот метод содержит только переключатель, чтобы проверить, какой другой метод должен быть вызван. Это выглядит так:
private _handleRequest(request: string): void {
switch (request) {
case 'Customer':
case 'Sales Manager':
this.groupHandler(request);
break;
case 'Agreement Ended':
this.getEnded();
break;
case 'Last Price Adjustment':
this.getPassed();
break;
default:
break;
}
}
Метод groupHandler отправляет запрос в Sharepoint, который выбирает все данные, а затем отправляет данные в компонент ListView, который отображает их на экране:
private groupHandler(group: string): void {
group = group.replace(/ +/g, "");
this.setState({
groupByFields: [{
name: group,
order: GroupOrder.ascending
}]
});
}
}
getEnded и getPassed почти одинаковы, извлекают данные из sharepoint и фильтруют результат перед его отправкой в компонент ListView.
Каждый метод обновляет состояние:
private getEnded(): void {
this.props.provider.getEnded().then((listItems: IList[]) => {
this.setState({
listItems: listItems
});
});
}
private getPassed (): void {
this.props.provider.getPassed().then((listItems: IList[]) => {
this.setState({
listItems: listItems
});
});
}
и инициализируется так:
export interface IListState {
listItems: IList [];
}
экспорт по умолчанию класса AgreementDatabase расширяет React.Component {
конструктор (props: IAgreementDatabaseProps) {
супер (реквизит);
this.state = {
listItems: []
};
this.groupHandler = this.groupHandler.bind(this);
}
Это componentDidMount, где я заполняю состояние данными, извлеченными из списка SharePoin:
public componentDidMount(): void {
this.props.provider.getContent().then((listItems: IList[]) => {
this.setState({
listItems: listItems
});
});
}
Теперь проблема в том, что когда я запускаю приложение и нажимаю на ссылку, которая вызывает метод groupHandler, список группируется без проблем. Проблема возникает, когда со сгруппированным списком я нажимаю на ссылку, которая вызывает метод getEnded или getPassed. В этом случае список не перезагружается до фильтрации результата. Я получаю сгруппированный список с отфильтрованными результатами.
Я публикую некоторые изображения для лучшего понимания.
![enter image description here](https://i.stack.imgur.com/QZxcM.png)
Как мне сбросить состояние, чтобы каждый раз, когда я нажимал на кнопку, приложение получало исходное состояние / значения перед применением фильтрации или группировки?
С наилучшими пожеланиями
Америко