Apakah tulisan tanpa kewarganegaraan bertindak balas?
藏色散人
Lepaskan: 2021-11-26 11:51:34
asal
1144 orang telah melayarinya
Kaedah tindak balas penulisan tanpa kewarganegaraan ialah "{props.xxx}". Komponen tanpa kewarganegaraannya digunakan terutamanya untuk menentukan templat, menerima data yang dihantar daripada prop komponen induk dan menggunakan ungkapan "{props.xxx }" Letakkan prop ke dalam templat.
Persekitaran pengendalian artikel ini: sistem Windows 7, react17.0.1, Dell G3.
Apakah cara untuk menulis tanpa kewarganegaraan sebagai tindak balas?
Cara menulis komponen stateless dan stateful komponen dalam React and the difference
Komponen dalam React terbahagi terutamanya kepada dua kategori: komponen stateless dan komponen stateful.
1. Komponen tanpa kewarganegaraan digunakan terutamanya untuk mentakrifkan templat, menerima data yang dihantar daripada prop komponen induk dan menggunakan ungkapan {props.xxx} untuk memasukkan prop ke dalam templat. Komponen tanpa kewarganegaraan harus memastikan templat tulen untuk memudahkan penggunaan semula komponen. Buat komponen stateless seperti berikut:
2 Komponen stateful digunakan terutamanya untuk mentakrifkan logik interaksi dan data perniagaan (jika Redux digunakan, data perniagaan boleh diekstrak dan diuruskan secara seragam), gunakan {this.state.xxx} melekapkan data perniagaan ke contoh komponen kontena (komponen stateful juga boleh dipanggil komponen kontena, dan komponen stateless juga boleh dipanggil komponen paparan), dan kemudian hantar prop kepada komponen paparan, dan komponen paparan Terima prop dan masukkan props ke dalam templat. Cipta komponen stateful seperti berikut:
class Home extends React.Component {
constructor(props) {
super(props);
};
render() {
return (
<header></header> //也可以写成<header></header>
)
}
}
export default Home
Salin selepas log masuk
Salin selepas log masuk
Ini ialah kaedah penulisan lalai rasmi Dalam pembina, parameter diluluskan secara lalai, dan kaedah super() dipanggil untuk mendapatkan contoh subkelas. . Tetapi apa yang lebih mengelirukan ialah mengapa parameter ini harus diluluskan, dan apakah kegunaan lulus parameter ini? Oleh kerana dari perspektif komponen dalam render(), pembina boleh mendapatkan atribut props pada contoh komponen tanpa lulus parameter. Seperti berikut:
Ini lebih mudah difahami, kerana kaedah render() ialah kaedah pada prototaip subkomponen Apabila mendapatkan atribut contoh, ia mesti diakses melalui ini , ia tidak boleh diperolehi. Kemudian persoalan datang, bagaimana jika kita mahu mengakses prop dalam pembina? Pada ketika ini, kita perlu lulus parameter props dalam pembina pembina supaya kita boleh mengakses atribut props pada contoh subkomponen. Seperti berikut:
Malah, nilai props.name dan this.props.name adalah sama, tetapi ia masih berbeza adalah sub-komponen. Atribut props, tetapi props dalam this.props.name bukanlah prop atribut subkomponen Walaupun nilainya adalah sama, props ini sebenarnya dihantar ke Komponen kelas induk apabila super kaedah dipanggil, jadi .props.name ini memperoleh atribut props dalam kelas induk Komponen. Lihat kod sumber React:
Perhatikan bahawa kaedah super subkelas menghantar parameter props kepada Komponen kelas induk, dan Komponen melekapkan parameter props pada prop atribut instancenya. Oleh itu, anda hanya boleh menggunakan ini dalam pembina dengan menghantar parameter props kepada kaedah super, props.xxx
Jika parameter props tidak diluluskan dalam kaedah super, ralat akan dilaporkan apabila mendapat nilai daripada ini.props.name. Dapatkan ini.props dan paparkannya sebagai tidak terurai: seperti berikut:
Intipati kaedah penulisan ini adalah untuk menetapkan prop atribut instance bagi Pengepala sub-komponen kepada atribut instance state.nameOne dan state .nameTwo daripada Pengepala sub-komponen Ia adalah mudah, dalam erti kata lain, subkomponen Pengepala mencipta atribut keadaan, dan kemudian menetapkan atribut props sendiri kepada atribut keadaannya sendiri.
Mengapa this.props dicetak tidak ditentukan? Oleh kerana prop ialah parameter yang diluluskan semasa memanggil subkomponen, prop tidak boleh diakses di dalam pembina, jadi untuk this.props.name, tidak ada keraguan bahawa ralat akan dilaporkan.
Jadi, untuk parameter props dalam pembina dan parameter props dalam super, jika anda tidak menggunakan this.props dan props dalam pembina, anda tidak perlu lulus parameter sama sekali. Jika tidak, lulus rujukan. Tetapi nilai yang diperoleh adalah sama untuk ini. prop dan prop, jadi anda boleh menulis salah satu. Walau bagaimanapun, kedua-dua parameter ditulis dalam dokumentasi rasmi. Jadi demi ketegasan, mari kita tulis semuanya. Namun, saya secara peribadi masih menyukai cara penulisan ini.
Yang tanpa ini adalah nilainya, dan yang dengan ini adalah kuncinya.
Komponen dalam React terbahagi terutamanya kepada dua kategori: komponen tanpa status dan komponen stateful.
1. Komponen tanpa kewarganegaraan digunakan terutamanya untuk mentakrifkan templat, menerima data yang dihantar daripada prop komponen induk dan menggunakan ungkapan {props.xxx} untuk memasukkan prop ke dalam templat. Komponen tanpa kewarganegaraan harus memastikan templat tulen untuk memudahkan penggunaan semula komponen. Buat komponen stateless seperti berikut:
2 Komponen stateful digunakan terutamanya untuk mentakrifkan logik interaksi dan data perniagaan (jika Redux digunakan, data perniagaan boleh diekstrak dan diuruskan secara seragam), gunakan {this.state.xxx} melekapkan data perniagaan ke contoh komponen kontena (komponen stateful juga boleh dipanggil komponen kontena, dan komponen stateless juga boleh dipanggil komponen paparan), dan kemudian hantar prop kepada komponen paparan, dan komponen paparan Terima prop dan masukkan props ke dalam templat. Cipta komponen stateful seperti berikut:
class Home extends React.Component {
constructor(props) {
super(props);
};
render() {
return (
<header></header> //也可以写成<header></header>
)
}
}
export default Home
Salin selepas log masuk
Salin selepas log masuk
Ini ialah kaedah penulisan lalai rasmi Dalam pembina, parameter diluluskan secara lalai, dan kaedah super() dipanggil untuk mendapatkan contoh subkelas. . Tetapi apa yang lebih mengelirukan ialah mengapa parameter ini harus diluluskan, dan apakah kegunaan lulus parameter ini? Oleh kerana dari perspektif komponen dalam render(), pembina boleh mendapatkan atribut props pada contoh komponen tanpa lulus parameter. Seperti berikut:
Ini lebih mudah difahami, kerana kaedah render() ialah kaedah pada prototaip subkomponen Apabila mendapatkan atribut contoh, ia mesti diakses melalui ini , ia tidak boleh diperolehi. Kemudian persoalan datang, bagaimana jika kita mahu mengakses prop dalam pembina? Pada ketika ini, kita perlu lulus parameter props dalam pembina pembina supaya kita boleh mengakses atribut props pada contoh subkomponen. Seperti berikut:
Malah, nilai props.name dan this.props.name adalah sama, tetapi ia masih berbeza adalah sub-komponen. Atribut props, tetapi props dalam this.props.name bukanlah prop atribut subkomponen Walaupun nilainya adalah sama, props ini sebenarnya dihantar ke Komponen kelas induk apabila super kaedah dipanggil, jadi .props.name ini memperoleh atribut props dalam kelas induk Komponen. Lihat kod sumber React:
Perhatikan bahawa kaedah super subkelas menghantar parameter props kepada Komponen kelas induk, dan Komponen melekapkan parameter props pada prop atribut instancenya. Oleh itu, anda hanya boleh menggunakan ini dalam pembina dengan menghantar parameter props kepada kaedah super, props.xxx
Jika parameter props tidak diluluskan dalam kaedah super, ralat akan dilaporkan apabila mendapat nilai daripada ini.props.name. Dapatkan ini.props dan paparkannya sebagai tidak terurai: seperti berikut:
Intipati kaedah penulisan ini adalah untuk menetapkan prop atribut instance bagi Pengepala sub-komponen kepada atribut instance state.nameOne dan state .nameTwo daripada Pengepala sub-komponen Ia adalah mudah, dalam erti kata lain, subkomponen Pengepala mencipta atribut keadaan, dan kemudian menetapkan atribut props sendiri kepada atribut keadaannya sendiri.
Mengapa this.props dicetak tidak ditentukan? Oleh kerana prop ialah parameter yang diluluskan semasa memanggil subkomponen, prop tidak boleh diakses di dalam pembina, jadi untuk this.props.name, tidak ada keraguan bahawa ralat akan dilaporkan.
Jadi, untuk parameter props dalam pembina dan parameter props dalam super, jika anda tidak menggunakan this.props dan props dalam pembina, anda tidak perlu lulus parameter sama sekali. Jika tidak, lulus rujukan. Tetapi nilai yang diperoleh adalah sama untuk ini. prop dan prop, jadi anda boleh menulis salah satu. Walau bagaimanapun, kedua-dua parameter ditulis dalam dokumentasi rasmi. Jadi demi ketegasan, mari kita tulis semuanya. Namun, saya secara peribadi masih menyukai cara penulisan ini.
Atas ialah kandungan terperinci Apakah tulisan tanpa kewarganegaraan bertindak balas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
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