reactjs 如何使其在选择Wallet时,如果Wallet不在阵列中,则将其添加到阵列中;如果Wallet在阵列中,则将其从阵列中删除

prdp8dxp  于 2023-01-08  发布在  React
关注(0)|答案(1)|浏览(132)

这是useCallback的外观,它经常被覆盖,并且只显示一个选定的钱包

const [ selectedWallet, setSelectedWallet] = useState<SyncedWalletData | undefined>(undefined);
const onSelectWallet = useCallback((wallet: SyncedWalletData) => setSelectedWallet(wallet), []);

将useState替换为

const [ selectedWallet, setSelectedWallet] = useState<SyncedWalletData[]>([]);

问题仍然存在,如何重写onSelectWallet,以便显示(所有)选定的钱包,即如果钱包在数组中,则不需要添加它,如果钱包不在数组中,则添加它
不可能重写onSelectWallet以使一切正常工作

xdnvmnnf

xdnvmnnf1#

您应该将onSelectWallet函数更改为:

const onSelectWallet = useCallback((wallet: SyncedWalletData) => {
  if (selectedWallet.includes(wallet)) {
    setSelectedWallet(selectedWallet.filter(w => w !== wallet))
  } else {
    setSelectedWallet([...selectedWallet, wallet])
  }
}), []);

相关问题