У меня проблемы с поиском решения для моего проекта React, использующего primereact. Я пытаюсь выполнить поиск / фильтр по раскрывающимся значениям.
import React, { useState, useEffect } from 'react';
import { InputText } from 'primereact/inputtext';
import {Dropdown} from 'primereact/dropdown';
....
const Editor = (props) => {
....
const [keyItems, setKeyItems] = useState();
useEffect(() => {
loadData();
}, []);
const loadData = () => {
getAllTheKeysFromBackend()
.then(res => {
setKeyItems(res);
});
}
return (
.....
<Dropdown
value={parentobject.key+''}
options={keyItems}
itemTemplate={selectTemplate}
onChange={e => changeKeyValue(e, 'key')}
filter={true}
filterBy="name"
/>
....
)
}
export default Editor
Функция getAllTheKeysFromBackend получает список объектов KeyDTO, который определяется следующим образом:
public class keyDTO {
private String name;
private String value;
private String label;
// getters and setters
}
Элементы раскрывающихся списков в пользовательском интерфейсе отображаются следующие данные:
У меня есть 2 вопроса:
1 - я хочу иметь возможность искать в этот список по «имени» (описание справа), а не только по «значению» (идентификационный номер). Я пытался использовать filterBy, но это не сработало. как я могу это сделать?
2 - как я могу поймать сработавшее событие, когда пользователь начинает вводить что-то в текстовое поле фильтра?
Большое спасибо