我有以下代碼:
const nodeRefs = useRef<Array<HTMLDivElement | null>>([]);
function setNodeRefs(ref: HTMLDivElement | null, idx: number): void { nodeRefs.current[idx] = ref; }
{nodes.length === 5 && nodes.map((node, idx) => (idx === 1 || idx === 2)
&& (
<MyComponent
setNodeRefs={setNodeRefs}
idx={idx}
key={String(`${idx}-${uuidv4()}`)}
className="h__node"
/>
))}
但是,生成的引用數組包含一個空項:
[empty, div.h__node, div.h__node]
似乎在refs數組中設置了一個節點,即使映射中的條件不滿足。
如何在不向數組中添加空項的情況下創建數組?
這是因為您分別在索引
1
和2
處設置元素,nodeRefs.current
數組的第0
個索引是undefined
。根據您的需求,從
idx
中減去1
或使用Array#push
應該可以。