array.length 메서드가 항상 handlerChange 이벤트 핸들러의 입력 단계보다 한 단계 느린 이유는 무엇입니까?
<p>입력을 기준으로 필터링하고 개체가 10개 이하인 경우에만 결과를 표시하는 목록을 만들려고 하는데 array.length가 항상 입력보다 뒤처집니다. </p>
<pre class="brush:php;toolbar:false;">const [countriesToShow, setCountriesToShow] = useState([])
const [newSearch, setSearch] = useState('')
const [showSearched, setShowShearched] = useState(true)
const [notificationMessage, setNotificationMessage] = useState(null)
useEffect(() => {
console.log(countriesToShow.length)
},[표시할 국가])
const handlerSearchChange = (이벤트) =>
setCountriesToShow(countries.filter(국가 =>
country.name.common.toLowerCase().includes(event.target.value.toLowerCase())))
setSearch(event.target.value)
if (event.target.value.trim().length === 0) {
setNotificationMessage(널)
setShowShearched(false)
}
else if (countriesToShow.length <= 10) {
setNotificationMessage(널)
setShowShearched(true)
console.log(countriesToShow.length)
}
또 다른 {
setNotificationMessage('목록이 너무 깁니다.')
setShowShearched(false)
console.log(countriesToShow.length)
}
}</pre>
<p> Effect Hook의 도움으로 길이를 올바르게 인쇄할 수 있었지만, 여전히 입력보다 뒤처지기 때문에 'else if (countriesToShow.length <= 10)'에 이를 구현하는 방법이 혼란스럽습니다. . </p>