我正在嘗試制作一個可以獲取其子項在渲染上的位置的函數,以便它可以重新渲染它們而不會重疊(它們是絕對定位的)。const ContentWrapper: React.FC<{article: Article.article.article}> = ({ article }) => { const [footnotePositions, setFootnotePositions] = useState<Number[]>([]); const updatePositions = (footnotePosition) => { setFootnotePositions([...footnotePositions, footnotePosition]); } useEffect(() => { // re position children... idk where to put this haven't gotten this far }, [footnotePositions]) return ( <> {article.map( (x, i) => ( <span key={i}> { x[1]==='' ? <Line>{x[0]}<br/>  </Line> : <> <Line>{x[0]}</Line> <FootnoteRef footnotePosition={updatePositions} /> <Citation footnote={x[1]}/> </> } </span> ))} </> )}我可以調試并看到該updatePositions函數被正確調用,但是它沒有正確設置狀態(我假設是因為異步性質 setState())。狀態僅設置為函數中呈現的最后一個組件的位置map()。如何在不覆蓋先前迭代的情況下從回調函數調用 setState?我是否需要綁定回調函數(這在功能組件中是如何工作的)?
React 將回調函數傳遞給多個子組件
暮色呼如
2023-05-11 13:51:44