⊗jsrtPmHkURf 12 of 47 menu

Kutumia Hook useRef kwa Kufanya Kazi na Refs katika React

Katika somo hili tutafanya kazi na refs. Ili kuonesha wazi hebu tuchambue utendakazi wa hook useRef ikilinganishwa na hook useState.

Hebu tuunde komponenenti yenye kifungo:

return ( <div> <button> bofya state </button> </div> );

Hebu tuingize useState kwenye komponenenti:

import { useState } from 'react';

Na tuunde state state:

const [state, setState] = useState(0);

Na sasa tufanye ili kwa kubofya kifungo state wetu iongezeke kwa 1. Thamani ya state tutaionesha moja kwa moja kwenye maandishi ya kifungo:

<button onClick={handleStateClick}> bofya state: {state} </button>

Hebu tuelezee chaguo za kukokotoa kwa ajili ya kushughulikia kubofya kwenye kifungo handleStateClick:

function handleStateClick() { setState(state + 1); }

Hebu tubofye kifungo kidogo na tuone jinsi thamani ya state inavyoongezeka.

Na sasa hebu tuunde komponenenti App, lakini tukitumia sio state, bali ref.

Kwanza, hebu tuingize useRef kwenye komponenenti:

import { useRef } from 'react';

Na tuunde ref ref. Kwa matokeo yake, hook useRef hurudisha kitu cha ref chenye sifa moja tu current, ambayo ndiyo itakuwa ya kuvutia kwetu baadaye. Hebu tuweke thamani yake ya kwanza kuwa 0:

const ref = useRef(0);

Hebu tuweke kichujio cha kubofya kwenye kifungo. Kumbuka kwamba tunapaswa kusoma/kubadilisha sio ref yenyewe, bali sifa yake current:

<button onClick={handleRefClick}> bofya ref: {ref.current} </button>

Hebu tuongeze chaguo za kukokotoa kwa ajili ya kushughulikia kubofya kwenye kifungo chetu. Hapa tutaongeza current kwa 1, kama tulivyofanya kwenye mfano uliopita na state. Tofauti na state, ambapo inahitaji chaguo za kukokotoa setState ili kubadilisha thamani yake, na sifa ya ref tunafanya kazi nayo moja kwa moja:

function handleRefClick() { ref.current = ref.current + 1; }

Sasa hebu tubofye kifungo chetu. Na tunaona nini? Wakati wa kubofya, kama tulivyokuwa awali 0, imebaki hivyo hivyo na haijabadilika.

Bila shaka, unaweza kuanza kutilia shaka kama thamani inabadilika kabisa. Hebu tuangalie hili. Kwa hili, kwenye chaguo za kukokotoa za kishughulia kibofya tuongeze mstari mwingine wa nambari ya kuonyesha thamani ya current kwenye koni:

function handleRefClick() { ref.current = ref.current + 1; console.log('bofya ref: ' + ref.current); }

Na sasa, kwa kufungua koni kwenye kivinjari, tena tubofye kifungo na tukihakikishe kwamba thamani kweli inabadilika kwa kilio bofya na hakuna udanganyifu wowote.

Sasa tunaona kwamba tofauti na state, mabadiliko ya thamani ya ref hayasababishi kuunda upya komponenenti. Kwa hiyo kila wakati kwenye maandishi ya kifungo tunaona thamani ya kwanza 0.

Kwa hivyo, ikiwa data zako zinatumika kwa ajili ya kuunda upya, basi hifadhi kwenye state, na ikiwa hauitaji kuunda upya, kwa hali kama hiyo utumiaji wa refs unaweza kuwa wa ufanisi zaidi.

Hebu kwenye komponenenti yako iwe na aya na maandishi 'maandishi' na kifungo. Fanya ili kila wakati kwa kubofya kifungo mwishoni mwa maandishi ya aya yaongezwe alama ya mshangao. Fanya hili kwa kutumia state.

Unde komponenenti App, lakini badala ya state sasa tumia ref. Hakikisha kwamba wakati wa kubonyeza kifungo maandishi ya aya hayatabadilika. Ongeza pia kuonyesha maandishi ya aya kwenye koni, uifungue na uhakikishe, kwamba kwa kweli maandishi yanabadilika.

Kiswahili
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Tunatumia kuki kwa ajili ya uendeshaji wa tovuti, uchambuzi na ubinafsishaji. Usindikaji wa data unafanyika kulingana na Sera ya Faragha.
kubali yote sanidi kataa