我正在尝试读取所有选中的项,并将该值序列化为selectedTransaction
。
问题是当我检查第一项时,它抛出undefined
错误&对于第二项的选择,它在控制台日志中显示1个数组项。
但如果我控制台记录selectedTransactions
,它会显示正确的项值。
我在这里做错了什么。请帮助
const [selectedTransaction, setSelectedTransaction] = useState<any>();
const handleCheckboxOnChange = (
transactionDetails: TransactionDetail,
isCheckeds: boolean,
) => {
const selectedTransactions = transactionsList.transactionDetails
.filter((item: TransactionDetail) => item.isChecked === true);
setSelectedTransaction(selectedTransactions);
console.log(selectedTransactions); // Shows 1 selected Item
console.log(selectedTransaction); // Shows undefined
})
状态没有立即更新(异步和批处理(,这就是为什么您得到undefined
或以前的状态
setSelectedTransaction(selectedTransactions);
console.log(selectedTransactions); // Shows 1 selected Item
console.log(selectedTransaction); // Shows undefined
使用useEffect在数据更改时控制状态。给依赖数组[selectedTransaction]
useEffect(()=>{
console.log(selectedTransaction);
}, [selectedTransaction]);