state.
const [state, setState] = useSetState({
searchWidth: (windowWidth < 992) ? 90 : 0,
searchString: (windowWidth < 992) ? '90px' : '',
isOpen: (windowWidth < 992),
})
// const handlerSearchOn = useCallback(() => {
const handlerSearchOn = () => {
setState({ isOpen: true })
const searchInterval = setInterval(() => {
console.log(state) // показывае всегда старое состояние
if (state.searchWidth >= 91) {
clearInterval(searchInterval)
return false
}
// состоние обновилось
setState((prevState) => ({
searchWidth: prevState.searchWidth + 15,
searchString: prevState.searchWidth + 'px',
}))
}, 35)
}
https://overreacted.io/making-setinterval-declarative-with-react-hooks/
Обсуждают сегодня