Хочу реализовать всплывающие подсказки, когда пользователь вводит текст в инпут. Набирает "то" - выпадают снизу подсказки ["торт", "торговля"]. При нажатии на подсказку текст помещается в инпут. Возникает проблема, что нужно нажать 2 раза на подсказку, чтобы она исчезла. Интересует лучшее решение и архитектура кода для такой задачи.
Ссылка на сандбокс
import "./styles.css";
import { useEffect, useState } from "react";
export default function App() {
//INPUT VALUE
const [val, setVal] = useState("");
//VARIABLES ARRAY
const arrayVariables = ["торт", "торговец", "слон", "кафе"];
// PRINT FILTRED VARIABLES
const [printVariables, setPrintVariables] = useState([]);
useEffect(() => {
if (val.length > 1) {
const variables = arrayVariables.filter((v) => v.includes(val));
setPrintVariables(variables);
}
}, [val]);
return (
<div className="App">
<input value={val} onChange={(e) => setVal(e.target.value)} />
<div>
{printVariables.length > 0 &&
printVariables.map((v) => {
return (
<div
onClick={() => {
setVal(v);
setPrintVariables([]);
}}
>
{v}
</div>
);
})}
</div>
</div>
);
}