У меня проблема с сохранением состояния поискового запроса.
Когда поповер попадает в фокус, searchString начинается с неопределенного (второе неопределенное значение на рисунке). Когда клавиша «b» нажата, событие запускается, и оно устанавливает значение «» (инициализированное значение). Как показано, когда «bart» находится в поисковом запросе, консоль регистрирует только «bar». Кто-нибудь знает, почему происходит такое поведение? Конечная цель заключается в том, что я пытаюсь сохранить строку поиска при выделении (она исчезает при нажатии) -> была бы признательна за любую помощь в этом. Основной блок кода, в котором происходят эти изменения:
<Autocomplete
open
onClose={handleClose}
multiple
classes={{
paper: classes.paper,
option: classes.option,
popperDisablePortal: classes.popperDisablePortal,
}}
value={pendingValue}
onChange={(event, newValue) => {
setPendingValue(newValue);
}}
// inputValue={searchString}
// onInputChange={(event, newValue) => {
// setSearchString(newValue);
// }}
disableCloseOnSelect
disablePortal
renderTags={() => null}
noOptionsText="No values"
renderOption={(option, { selected }) => (
<React.Fragment>
<DoneIcon
className={classes.iconSelected}
style={{ visibility: selected ? 'visible' : 'hidden' }}
/>
<div className={classes.text}>
{option.value}
</div>
</React.Fragment>
)}
options={[...suggestions].sort((a, b) => {
// Display the selected labels first.
let ai = selectedValue.indexOf(a);
ai = ai === -1 ? selectedValue.length + suggestions.indexOf(a) : ai;
let bi = selectedValue.indexOf(b);
bi = bi === -1 ? selectedValue.length + suggestions.indexOf(b) : bi;
return ai - bi;
})}
getOptionLabel={option => option.value}
renderInput={params => (
<InputBase
ref={params.InputProps.ref}
inputProps={params.inputProps}
autoFocus
className={classes.inputBase}
// onChange={(event) => {
// console.log("event.target: ", event.target);
// console.log("event.currentTarget: ", event.currentTarget);
// setSearchString(event.currentTarget);
// }}
value={searchString}
onChange={handleInputChange}
/>
)}
/>
Я попытался сохранить значение и заново заполнить его, используя как реквизиты автозаполнения, так и InputBase (выполнение этого в обоих случаях приводит к взлому sh). Я добавил песочницу для вашей ссылки: CodeSandbox
Цените всю помощь!