我有一個簡單的useState鉤子,用它來管理所選復選框的狀態。
選中的復選框應該顯示在ui中(在我的過濾器中)。
被選中的復選框被正確存盤,但只有當我關閉我的過濾器組件并再次打開它時才會顯示。而不是在復選框被選中后立即顯示。
這是我目前的情況。
以下是我當前的狀態(簡化):
過濾器組件
過濾器組件: 渲染: uj5u.com熱心網友回復: 當你關閉過濾器時,該組件被卸載,當你再次打開時,它將以新的值被加載。
你需要回傳一個新的陣列,而不是突變當前的陣列,例如像這樣: 你需要回傳一個新的陣列,而不是突變當前的陣列。
或者 或者使用immer,它允許你以一種更方便的方式處理不可變的狀態。
標籤: const [selected, setSelected] = useState([] ) 。
const handleState = (id: string) => {
const selectedIndex = selected.findIndex((i) => i.id == id)。
if (selectedIndex > -1) {
selected.splice(checkedIndex, 1) 。
} else {
selected.push(data.find((i) => i.id == id)。
}
//設定所選復選框的狀態。
setSelected(selected)。
};
{selected.length > 0 ? (
<div className="selected-boxes">?
{selected.map((cb) => (
<span key={cb. label}>{cb.label}</span>
))}
</div>>
) : (
//其他一些東西。
selected是一個陣列,當一些復選框被選中時,你會對其進行突變,但從本質上來說,這仍然是同一個值,所以React不會重新渲染組件。
//set the state of the selected checkboxes
setSelected(selected.slice()) 。
//設定選中復選框的狀態。
setSelected([...selected])。
