Rumah > hujung hadapan web > tutorial js > Mengapa Anda Harus Mengelak Fungsi Anak Panah Sebaris dalam Kaedah Reaksi Reaksi?

Mengapa Anda Harus Mengelak Fungsi Anak Panah Sebaris dalam Kaedah Reaksi Reaksi?

Barbara Streisand
Lepaskan: 2024-11-15 04:34:02
asal
220 orang telah melayarinya

Why Should You Avoid Inline Arrow Functions in React Render Methods?

Mengelakkan Fungsi Anak Panah Sebaris dalam Kaedah Render

Adalah disyorkan untuk mengelakkan fungsi anak panah sebaris seperti ini._handleChange.bind(this) dalam kaedah render komponen React.

Sebab:

Semasa pemaparan semula, React akan mencipta kaedah baharu dan bukannya menggunakan semula kaedah lama. Ini boleh menjejaskan prestasi dengan menyebabkan penciptaan fungsi dan peruntukan memori yang tidak diperlukan.

Alternatif:

Terdapat beberapa cara untuk memintas fungsi anak panah mengikat dalam kaedah pemaparan:

1. Pengikatan Pembina:

  • Ikat kaedah dalam pembina: this._handleChange = this._handleChange.bind(this);
  • Contoh:

    class MyClass extends React.Component {
       constructor(props) {
          super(props);
          this._handleChange = this._handleChange.bind(this);
       }
    
       _handleChange() {
          // ...
       }
    
       render() {
          return <input onChange={this._handleChange} />;
       }
    }
    Salin selepas log masuk

2. Sintaks Pemula Harta:

  • Tentukan kaedah menggunakan sintaks pemula sifat: _handleChange = () => { ... };
  • Contoh:

    class MyClass extends React.Component {
       _handleChange = () => {
          // ...
       };
    
       render() {
          return <input onChange={this._handleChange} />;
       }
    }
    Salin selepas log masuk

3. Pengendalian Acara dengan Fungsi Panggilan Balik:

  • Buat fungsi panggil balik berasingan yang menerima hujah yang diperlukan:
  • Contoh:

    class MyClass extends React.Component {
       handleDeleteTodo = (todo) => {
          // ...
       };
    
       render() {
          return todos.map((todo) => (
             <div key={todo}>
                <input onChange={this.handleDeleteTodo.bind(this, todo)}>
                {todo}
             </div>
          ));
       }
    }
    Salin selepas log masuk

4. Fungsi Anak Panah Skop Komponen:

  • Isytihar fungsi anak panah di luar kaedah render tetapi dalam skop kelas komponen:
  • Contoh:

    class MyClass extends React.Component {
        _handleDeleteTodo = (todo) => {
           // ...
        };
    
        render() {
           return todos.map((todo) => (
              <div key={todo} onClick={this._handleDeleteTodo.bind(this, todo)}>
                 {todo}
              </div>
           ));
        }
    }
    Salin selepas log masuk

5. Pengendali Acara Luaran:

  • Pindahkan logik pengendalian acara ke komponen luaran atau fungsi pembantu untuk mengelakkan ikatan dalam kaedah pemaparan:
  • Contoh:

    const handleDeleteTodo = (todo) => {
       // ...
    };
    
    class MyClass extends React.Component {
       render() {
          return todos.map((todo) => (
             <MyComponent todo={todo} onDelete={handleDeleteTodo} />
          ));
       }
    }
    
    class MyComponent extends React.Component {
       render() {
          return <div onClick={this.props.onDelete.bind(this, this.props.todo)}>{this.props.todo}</div>;
       }
    }
    Salin selepas log masuk

Alternatif ini menawarkan kaedah yang cekap untuk mengendalikan peristiwa dalam komponen React tanpa mengorbankan prestasi atau memperkenalkan pengikatan fungsi yang tidak perlu.

Atas ialah kandungan terperinci Mengapa Anda Harus Mengelak Fungsi Anak Panah Sebaris dalam Kaedah Reaksi Reaksi?. 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