@HitGirl

Почему не срабатывает проверка на первое монтирование?

Здравствуйте!
Подскажите, пожалуйста, почему при первом монтировании useEffect выводит в консоль сначала false, а затем true, хотя deferredInput не изменяется. Как сделать, так чтобы onInputChanged, вызывался только при изменении deferredInput?
const Search = ({onInputChanged,placeholder="",className=""}:{onInputChanged:(input:string)=>any,className?:string,placeholder?:string})=>{
    const isMounted = useRef(false)
    const [searchInput, setSearchInput] = useState("")
    const deferredInput = useDeferredValue(searchInput)



    useEffect(()=>{
        console.log(isMounted.current)
        if (isMounted.current){
            onInputChanged(deferredInput)
        }
        else {
            isMounted.current = true
        }


    },[deferredInput])


    return (
        <Input
            placeholder={placeholder ? placeholder:"Найдётся всё..."}
            value={searchInput}
            onChange={(e)=>setSearchInput(e.target.value)}
            className={"w-full"+className}
        />
    )
}

export default Search;
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ответы на вопрос 1
Kentavr16
@Kentavr16
long cold winter
Если правильно понял желаемый результат - я бы сделал примерно так. Обрати внимание на то, как срабатывает сообщение в консоли.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы