Saya menambah komponen React dalam tatasusunan dan memaparkan tatasusunan apabila saya mengklik butang "Tambah Komponen". Setiap komponen diberikan dengan menghantarnya sebagai harta kepada cangkuk kiraan.
Masalahnya ialah sebaik sahaja komponen ditambahkan pada tatasusunan dan dipaparkan, walaupun saya menambah kiraan melalui butang, cangkuk kiraan mengemas kini, tetapi komponen yang diberikan daripada tatasusunan tidak dikemas kini. Apabila saya mengklik butang "Tambah Komponen" sekali lagi, komponen baharu akan dipaparkan dengan cangkuk yang dikemas kini. Tetapi komponen sebelumnya tidak akan dikemas kini kerana ia ditambah.
import React, { useState } from 'react'; import Component from './Components/Component'; function App() { const [comp, setComp] = useState([]); const [count, setCount] = useState(0); const addComp = ()=>{ setComp(prevState=>{ return([...prevState,<Component key={comp.length} count={count}></Component>]) }) } const increment = ()=>{ setCount(prevState=>prevState+1) } return ( <> <button onClick={addComp}>添加组件</button> <button onClick={increment}>增加</button> {comp} </> ) } # export default App;
import React from 'react' export default function Component(props) { return ( <div>{props.count}</div> ) }
useState() cangkuk sebenarnya mengesyorkan menyimpan jenis primitif atau objek mudah. Ia adalah idea yang bagus untuk menyimpan komponen di dalamnya, tetapi ia benar-benar membebankan React dari perspektif prestasi.
Penyelesaian yang lebih baik ialah menggunakan nilai jenis primitif dan hantar nilai ini ke peta semasa membuat rendering. Berikut ialah contoh yang bagus: