以下のコードでは、呼び出し時に_toggleSearch
2 つのフックを同時に更新します。
toggleSearchIsVisible
は単純なブール値ですが、setActiveFilter
フックは前のsearchIsVisible
状態で渡す必要があります。
渡されたときに他の状態がまだ更新されていないことを確認するにはどうすればよいですか? または、他にどのようにすべてを再構築する必要がありますか? 以前setState
は以前の状態で簡単に通過できました。
const [activeFilter, setActiveFilter] = useState('SHOW_ALL');
const [searchIsVisible, toggleSearchIsVisible] = useState(false);
const _toggleSearch = () => {
setActiveFilter(searchIsVisible ? 'SHOW_SEARCH' : 'SHOW_ALL');
toggleSearchIsVisible(!searchIsVisible);
};
私は今のところこれで行きました:
const _toggleSearch = () => {
if (searchIsActive) {
setActiveFilter('SHOW_ALL');
toggleSearchIsActive(false);
} else {
setActiveFilter('SHOW_SEARCH');
toggleSearchIsActive(true);
updateSearchValue('');
}
};
他の提案は大歓迎です!