Apakah cangkuk? Mari kita bincangkan tentang dua Cangkuk yang biasa digunakan dalam React

青灯夜游
Lepaskan: 2022-03-18 11:21:12
ke hadapan
2445 orang telah melayarinya

Artikel ini akan membawa anda melalui cangkuk, bercakap tentang sebab disyorkan untuk menggunakan cangkuk untuk pembangunan, dan memperkenalkan dua Cangkuk yang paling biasa digunakan dalam React. Saya harap ia akan membantu semua orang!

Apakah cangkuk? Mari kita bincangkan tentang dua Cangkuk yang biasa digunakan dalam React

Perkenalkan dahulu apa itu cangkuk

Cangkuk ialah ciri baharu React 16.8 Ia digunakan khas dalam komponen berfungsi komponen. Ciri-ciri lain biasanya digunakan dalam kerja sebenar. [Cadangan berkaitan: Tutorial video Redis]

Mengapa disyorkan untuk menggunakan cangkuk untuk pembangunan

Cangkuk digunakan khas untuk membangunkan komponen berfungsi dan boleh digunakan untuk menggantikan kelas Beberapa kitaran hayat untuk mengelakkan kekeliruan yang disebabkan oleh sebilangan besar ini, jadi cangkuk memudahkan pembangunan dan memudahkan pembangun memahami kod

Di atas adalah ringkasan peribadi. sila rujuk laman web rasmi react:

https://react.docschina.org/docs/hooks-intro.html#motivation

useState

In kod:

React.useState(0) adalah bersamaan dengan this.state dalam komponen kelas pembolehubah

setVariable boleh digunakan untuk mengubah suai nilai, yang boleh bersamaan dengan ini.setState dalam komponen kelas

useEffect
import React,(useState) from 'react'
export default function useState_Demo() {
    const [variable, setVariable] = useState(0);//通过解构赋值,我们拿到的variable、setVariable
    function changeVariable(){
        setVariable((variable) => variable +1) //setVariable的回调中传进来的参数是variable
    }
    render (
        <div> 
            <button onclick = {change}>点我会使variable+1</button>
        </div>
    )
}
Salin selepas log masuk

Dalam kod:

Seperti yang dapat dilihat daripada kod berikut, penggunaan useEffect menggantikan Penggunaan componentDidMoun, componentDidUpdate dan componentWillUnmount dalam komponen kelas

Perkara yang perlu diberi perhatian apabila menggunakan cangkuk
import React,(useState, useEffect) from &#39;react&#39;
export default function useState_Demo() {
   const [variable, setVariable] = useState(0);//通过解构赋值,我们拿到的variable、setVariable
    
    useEffect(() => {
        //这个return是在该组件监测的数据变化时或者被卸载时调用的,被卸载时调用可以相当于componentWillUnmount钩子 
        return () => {
            console.log(&#39;该组件被卸载了&#39;)
        }
    }, [variable])//第二个参数传了[variable],表示检测variable的更新变化,一旦variable变化就会再次执行useEffect的回调
                  //第二个参数传了[],表示谁都不检测只执行一次useEffect的回调,相当于componentDidMount钩子
                  //第二个参数不传参,只要该组件有state变化就会执行useEffect的回调,相当于componentDidUpdate钩子
    function changeVariable(){
        setVariable((variable) => variable +1) //setVariable的回调中传进来的参数是variable
    }
    render (
        <div> 
            <button onclick = {change}>点我会使variable+1</button>
        </div>
    )
}
Salin selepas log masuk

1. Hanya gunakan Cangkuk di lapisan paling luar fungsi komponen, bukan dalam gelung, keadaan atau Cangkuk Panggilan bersarang

dalam set fungsi 2. Cangkuk
import React,(useEffect) from &#39;react&#39;
export default function useState_Demo() {
   //这里才是正确的
   useEffect(() => {})
    
   //错误1,使用了条件判断
   if(true) {
        useEffect(() => {})
   }
   //错误2,使用了循环
   while(true) {
        useEffect(() => {})
   }
  //错误3,使用了嵌套
  useEffect(() => {
      useEffect(() => {})
  })
}
Salin selepas log masuk

tidak boleh digunakan di luar fungsi komponen 3. Untuk mengelakkan ralat di atas, anda boleh memasang
import React,(useState, useEffect) from &#39;react&#39;
//错误1,在组件函数外使用了useState
const [variable, setVariable] = useState(0);
//错误2,在组件函数外使用了useEffect
useEffect(() => {})
export default function useState_Demo() {
   //在组件函数里使用才是正确的
   const [variable, setVariable] = useState(0);
}
Salin selepas log masuk

pemalam ESLint untuk menyemak ralat kodeslint-plugin-react-hooksCustom hook

Kail tersuai adalah untuk memudahkan perkongsian logik antara komponen Sebenarnya, ia adalah untuk merangkum fungsi yang boleh digunakan semula

Anda mungkin tertanya-tanya, adakah Cangkuk yang sama akan digunakan dalam berbilang komponen untuk berkongsi keadaan?

//自定义hook
function useHook(initState) {
  const [variable, setVariable] = useState(initState)
  return variable;
}
//使用自定义hook
export default function useState_Demo() {
    const variableState = useHook(0)
}
Salin selepas log masuk
Jawapannya: tidak. Oleh kerana setiap panggilan ke cangkuk yang disertakan dengan tindak balas adalah bebas dan tidak menjejaskan satu sama lain, jadi cangkuk tersuai adalah bebas dan tidak menjejaskan satu sama lain apabila dipanggil berbilang kali

Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati :

Pengenalan kepada pengaturcaraan

! !

Atas ialah kandungan terperinci Apakah cangkuk? Mari kita bincangkan tentang dua Cangkuk yang biasa digunakan dalam React. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:juejin.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
Tutorial Popular
Lagi>
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!