这是我的代码,我在其中获取对我想要聚焦的当前元素的引用,但焦点不会转到该元素。
useEffect(() => {
setTimeout(() => {
console.log("This is current barcode ref inside", barcodeRef.current);
barcodeRef.current && barcodeRef.current.focus();
}, 500)
//barcodeRef.current && barcodeRef.current.focus();
}, [tableData]);
这也是我引用我想要关注的输入元素的方式。
{tableData.map((row, rowIndex) => (
{columns.map(
(column) =>
!column.hidden && (
{column.accessorKey === "ItemName" ? (
handleLeaveItem(
rowIndex,
column.accessorKey,
event.target.value
)
}
/>
) : (
handleSaveCell(
rowIndex,
column.accessorKey,
event.target.value
)
}
/>
)}
)
)}
handleRemoveRow(rowIndex)}>
))}
我也尝试过使用useLayoutEffect,但没有成功。在控制台中,我得到的是我想要关注的正确输入元素。
::before ::after
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
您的
useEffect需要依赖于barcodeRef,如下所示:useEffect(() => { const timeout = setTimeout(() => { console.log("This is current barcode ref inside", barcodeRef.current); barcodeRef.current && barcodeRef.current.focus(); }, 500) return () => clearTimeout(timeout); }, [tableData, barcodeRef]);