Rumah > hujung hadapan web > tutorial js > Mengapa Anda Perlu Mengelakkan Fungsi Ikatan atau Anak Panah Sebaris dalam Kaedah Render React?

Mengapa Anda Perlu Mengelakkan Fungsi Ikatan atau Anak Panah Sebaris dalam Kaedah Render React?

Linda Hamilton
Lepaskan: 2024-11-15 17:51:03
asal
512 orang telah melayarinya

Why Should You Avoid Binding or Inline Arrow Functions in React's Render Method?

Mengelakkan Fungsi Ikatan atau Anak Panah Sebaris dalam Kaedah Render

Pengenalan

Fungsi pengikat atau penggunaan fungsi anak panah sebaris dalam kaedah pemaparan tidak digalakkan dalam React kerana ia boleh mencipta isu prestasi semasa pemaparan. Artikel ini meneroka alternatif kepada amalan ini dan memberikan contoh pelaksanaannya.

Isu dengan Binding in Render

Apabila fungsi mengikat atau menggunakan fungsi anak panah sebaris dalam pemaparan, yang baharu contoh fungsi dicipta dengan setiap kitaran rendering. Ini boleh membawa kepada kemerosotan prestasi, terutamanya dalam kes pemaparan semula yang kerap.

Alternatif untuk Mengikat

  • Menggunakan Pembina Komponen:

    • Ikat fungsi dalam pembina untuk menggunakan semula kejadian yang sama semasa pemaparan.
  • Menggunakan Sintaks Pemula Harta:

    • Isytihar fungsi dalam badan kelas dan tetapkan kepada sifat menggunakan fungsi anak panah secara langsung.

Senario: Lulus Parameter Tambahan

Pertimbangkan kes menghantar parameter tambahan kepada pengendali acara dalam fungsi peta. Sebagai contoh, pertimbangkan untuk memadamkan item daripada senarai tugasan:

todos.map(el => <div key={el} onClick={this._deleteTodo.bind(this, el)}> {el} </div>)
Salin selepas log masuk

Penyelesaian: Komponen Kanak-kanak

Untuk mengelak daripada mengikat, buat komponen kanak-kanak untuk kandungan yang dipetakan:

Komponen Induk:

deleteTodo = (val) => {
    console.log(val)
}
todos.map(el => 
    <MyComponent val={el} onClick={this.deleteTodo}/> 

)
Salin selepas log masuk

Komponen Anak (Komponen Saya):

class MyComponent extends React.Component {
    deleteTodo = () => {
        this.props.onClick(this.props.val);
    }
    render() {
       return <div  onClick={this.deleteTodo}> {this.props.val} </div>
    }
}
Salin selepas log masuk

Dalam pendekatan ini, fungsi pengendali acara berada dalam komponen kanak-kanak, memberikan prestasi yang lebih baik semasa pemaparan.

Contoh:

Berikut ialah contoh lengkap yang menunjukkan pendekatan komponen kanak-kanak:

class Parent extends React.Component {
     _deleteTodo = (val) => {
        console.log(val)
    }
    render() {
        var todos = ['a', 'b', 'c'];
        return (
           <div>{todos.map(el => 
             <MyComponent key={el} val={el} onClick={this._deleteTodo}/> 
        
           )}</div>
        )
    }
    
   
}

class MyComponent extends React.Component {
        _deleteTodo = () => {
                     console.log('here');   this.props.onClick(this.props.val);
        }
        render() {
           return <div onClick={this._deleteTodo}> {this.props.val} </div>
        }
    }
    
ReactDOM.render(<Parent/>, document.getElementById('app'));
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Anda Perlu Mengelakkan Fungsi Ikatan atau Anak Panah Sebaris dalam Kaedah Render React?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan