Komponen bertindak balas tidak dipaparkan semula semasa mengemas kini keadaan
P粉277464743
P粉277464743 2023-08-20 10:08:52
0
2
424
<p>Saya rasa anda mempunyai penyelesaian yang lebih baik untuk masalah ini: Saya mempunyai fail yang mengandungi tatasusunan objek kucing saya: </p> <pre class="brush:php;toolbar:false;">var categories = [ { "id": 1, "nama" : "Fakturi", "dipilih" : palsu }, { "id": 2, "nama" : "Telefon", "dipilih" : palsu }, { "id": 3, "name" : "Komputer", "dipilih" : palsu }, { "id": 4, "nama" : "Rachunkowośc", "dipilih" : palsu }, { "id": 5, "nama" : "Kewangan", "dipilih" : palsu } ];</pre> <p>Saya ada: </p> <pre class="brush:php;toolbar:false;"><ul className="category"> {this.state.categories.map((item,index) => <li onClick={()=>this.filterCategory(item,index)} key={item.id} className={item.selected? : ''}>{item.name}< /li> )} </ul></pre> <p>Fungsi Kategori penapis saya:</p> <pre class="brush:php;toolbar:false;">filterCategory(item,index) { this.state.categories[index].selected = !this.state.categories[index].selected; this.forceUpdate(); }</pre> <p>Adakah anda tahu bagaimana saya boleh melaksanakan ini tanpa menggunakan <code>forceUpdate()</code>? Saya membaca di Stack bahawa menggunakan <code>this.forceUpdate()</code> </p>
P粉277464743
P粉277464743

membalas semua(2)
P粉001206492

Jangan ubah suai status terus

Gunakan kaedah setState untuk perubahan keadaan.

P粉638343995

Gunakan setState会自动触发重新渲染,所以不要直接修改状态,而是使用setState untuk mengemas kini status anda.

filterCategory(item,index){
   var categories = [...this.state.categories];
   categories[index].selected = !categories[index].selected;
   this.setState({categories})
}

Mengikut dokumentasi:

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!