Проблема может быть здесь:
useEffect(() => {
rezCards()
},[])
Вы оставили второй аргумент как пустой массив, поэтому useEffect
запускается только один раз, когда компонент монтируется, точно так же, как componentDidMount
.
Если вы хотите запускать useEffect
при каждом изменении состояния, вы можете добавить это состояние в качестве зависимости для ловушки, например,
const { callThisEffectWhenThisValueIsChanged, changeValue } = useState('');
useEffect(() => {
// Do anything with here, for eg call APIs
},[callThisEffectWhenThisValueIsChanged])
changeValue(newValue);
Таким образом, в вашем коде CodeSandbox все, что вам нужно сделать, это добавить свой searchInput
в зависимость, и он будет вызывать ловушку снова всякий раз, когда изменяется входной поиск.
useEffect(() => {
rezCards();
}, [searchInput]);
Всегда помните, что всякий раз, когда ваш эффект использует какое-либо состояние, вам нужно добавить это состояние в качестве зависимости для ловушек эффектов
Более подробную информацию вы можете найти в документе React Hook
.