0

以下のコードでは、呼び出し時に_toggleSearch2 つのフックを同時に更新します。

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('');
  }
};

他の提案は大歓迎です!

4

2 に答える 2