Rumah > Artikel > hujung hadapan web > Mengapa bertindak balas menggunakan komponen khas untuk membuat senarai?
Oleh kerana apabila bertindak balas menghasilkan pengumpulan data yang besar, penyelaras mesti menilai komponen yang dijana oleh setiap koleksi yang diubah, yang sangat tidak cekap menggunakan komponen khusus untuk memaparkan senarai boleh meningkatkan prestasi pengumpulan data yang besar, dan tidak lagi menghasilkan komponen lain.
Persekitaran pengendalian tutorial ini: Sistem Windows 10, bertindak balas versi 17.0.1, komputer Dell G3.
Memaparkan senarai dalam komponen khusus
Ini amat penting apabila memaparkan pengumpulan data yang besar. React berprestasi sangat teruk apabila memaparkan koleksi data yang besar kerana penyelaras mesti menilai komponen yang terhasil untuk setiap koleksi yang berubah. Oleh itu, adalah disyorkan untuk menggunakan komponen khusus untuk memetakan koleksi (tatasusunan) dan menjadikan komponen ini, dan jangan sekali-kali menjadikan komponen lain:
Buruk:
class MyComponent extends Component { render() { const {todos, user} = this.props; return (<div> {user.name} <ul> {todos.map(todo => <TodoView todo={todo} key={todo.id} />)} </ul> </div>) } }
Dalam contoh di atas, apabila Apabila nama pengguna berubah, React tidak perlu menyelaraskan semua komponen TodoView Walaupun komponen TodoView tidak akan dipaparkan semula, proses penyelarasan itu sendiri sangat mahal:
class MyComponent extends Component { render() { const {todos, user} = this.props; return (<div> {user.name} <TodosView todos={todos} /> </div>) } }
class TodosView extends Component { render() { const {todos} = this.props; return <ul> {todos.map(todo => <TodoView todo={todo} key={todo.id} />)} </ul>) } }Perenderan senarai dalam React
V-for digunakan dalam Vue.js untuk melaksanakan pemaparan gelung item senarai dalam templat
wx digunakan dalam applet :untuk melaksanakan pemaparan kitaran item senarai dalam templat
Tiada templat dalam React (iaitu, tidak memerlukan v-for), dan tiada sistem arahan (iaitu, tiada mekanisme yang serupa adalah disediakan).
Kaedah 1: untuk lintasan gelungKaedah 2: Buat fungsi untuk mengembalikan tatasusunan JSX yang dipetakan
import React, { Component } from 'react' export default class App extends Component { // 假设服务器端返回如下 state={books:['巴黎圣母院','悲惨世界','爱的教育','简·爱','钢铁是怎样炼成的','安徒生童话']} booklist(){ // 把服务器端返回的字符串数组转换为JSX数组 let arr=[] for(let i=0;i<this.state.books.length;i++){ arr.push( <li key={i}>《{this.state.books[i]}》</li> ) } return arr } render() { return ( <div> <ul> {this.booklist()} </ul> </div> ) } }
showList(){ return this.state.list.map( (e,i)=>JSX ) } {this.showList() }
import React, { Component } from 'react' export default class App extends Component { // 假设服务器端返回如下 state={books:['巴黎圣母院','悲惨世界','爱的教育','简·爱','钢铁是怎样炼成的','安徒生童话']} booklist(){ // 把服务器端返回的字符串数组转换为JSX数组 return this.state.books.map( (b,i)=> <li key={i}>《{b}》</li> ) } render() { return ( <div> <ul> {this.booklist()} </ul> </div> ) } }Kaedah 3: Ikat terus tatasusunan JSX yang dipetakan
{ this.state.list.map( (e,i)=>JSX ) }Keputusan kaedah di atas adalah sama, seperti yang ditunjukkan dalam rajah di bawah
import React, { Component } from 'react' export default class App extends Component { // 假设服务器端返回如下 state={books:['巴黎圣母院','悲惨世界','爱的教育','简·爱','钢铁是怎样炼成的','安徒生童话']} render() { return ( <div> <ul> {/*this.booklist()*/} { /*此处不能急 编写for循环——for不是表达式*/ this.state.books.map( (b,i)=> <li key={i}>《{b}》</li> ) } </ul> </div> ) } }
Pembelajaran yang disyorkan: "
tutorial video bertindak balasAtas ialah kandungan terperinci Mengapa bertindak balas menggunakan komponen khas untuk membuat senarai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!