Atsauces ir saīsinājums, ko izmanto atsauces sadaļā Reakt. Tas ir līdzīgs atslēgas sadaļā Reakt. Tas ir atribūts, kas ļauj saglabāt atsauci uz konkrētiem DOM mezgliem vai React elementiem. Tas nodrošina veidu, kā piekļūt React DOM mezgliem vai React elementiem un kā ar tiem mijiedarboties. To izmanto, ja mēs vēlamies mainīt bērna komponenta vērtību, neizmantojot rekvizītus.
Kad izmantot atsauces
Atsauces var izmantot šādos gadījumos:
- Kad mums ir nepieciešami DOM mērījumi, piemēram, fokusa pārvaldība, teksta atlase vai multivides atskaņošana.
- To izmanto, lai aktivizētu obligātas animācijas.
- Integrējot ar trešo pušu DOM bibliotēkām.
- To var izmantot arī kā atzvanīšanu.
Kad neizmantot Refs
- Jāizvairās no tā lietošanas visam, ko var izdarīt deklaratīvi . Piemēram, tā vietā, lai izmantotu atvērt () un aizvērt () metodes dialoga komponentā, jums ir jānokārto an ir Atvērts atbalsts tam.
- Jums vajadzētu izvairīties no Refs pārmērīgas izmantošanas.
Kā izveidot atsauces
Programmā React Refs var izveidot, izmantojot React.createRef() . To var piešķirt React elementiem, izmantojot ref atribūts. Tas parasti tiek piešķirts gadījuma rekvizītam, kad tiek izveidots komponents, un pēc tam uz to var atsaukties visā komponentā.
class MyComponent extends React.Component { constructor(props) { super(props); this.callRef = React.createRef(); } render() { return ; } }
Kā piekļūt Refs
Programmā React, kad atsauce tiek nodota elementam renderēšanas metodē, atsaucei uz mezglu var piekļūt, izmantojot atsauces pašreizējo atribūtu.
const node = this.callRef.current;
Atsauces uz pašreizējiem īpašumiem
Atsauces vērtība atšķiras atkarībā no mezgla veida:
- Ja HTML elementā tiek izmantots atribūts ref, atsauce tiek izveidota ar React.createRef() saņem pamatā esošo DOM elementu kā savu strāva īpašums.
- Ja atsauces atribūts tiek izmantots pielāgotā klases komponentā, tad ref objekts saņem atribūtu uzstādīts komponenta gadījumu kā tā pašreizējo īpašumu.
- Ref atribūtu nevar izmantot funkciju komponenti jo viņiem nav gadījumu.
Pievienojiet atsauci DOM elementiem
Tālāk esošajā piemērā mēs pievienojam atsauci, lai saglabātu atsauci uz DOM mezglu vai elementu.
import React, { Component } from 'react'; import { render } from 'react-dom'; class App extends React.Component { constructor(props) { super(props); this.callRef = React.createRef(); this.addingRefInput = this.addingRefInput.bind(this); } addingRefInput() { this.callRef.current.focus(); } render() { return ( <h2>Adding Ref to DOM element</h2> ); } } export default App;
Izvade
Pievienojiet klases komponentiem atsauci
Tālāk esošajā piemērā mēs pievienojam atsauci, lai saglabātu atsauci uz klases komponentu.
Piemērs
import React, { Component } from 'react'; import { render } from 'react-dom'; function CustomInput(props) { let callRefInput = React.createRef(); function handleClick() { callRefInput.current.focus(); } return ( <h2>Adding Ref to Class Component</h2> ); } class App extends React.Component { constructor(props) { super(props); this.callRefInput = React.createRef(); } focusRefInput() { this.callRefInput.current.focus(); } render() { return ( ); } } export default App;
Izvade
Atzvanīšanas atsauces
Reaģējot, ir vēl viens veids, kā izmantot atsauces, ko sauc par ' atzvanīšanas refs ' un tas dod lielāku kontroli, kad ir atsauces komplekts un atiestatīts . Tā vietā, lai izveidotu atsauces ar metodi createRef(), React ļauj izveidot atsauces, nododot atzvanīšanas funkciju komponenta ref atribūtam. Tas izskatās kā zemāk redzamais kods.
this.callRefInput = element} />
Atzvanīšanas funkcija tiek izmantota, lai saglabātu atsauci uz DOM mezglu instances īpašumā, un tai var piekļūt citur. Tam var piekļūt šādi:
this.callRefInput.value
Tālāk sniegtais piemērs palīdz izprast atzvanīšanas atsauces darbību.
import React, { Component } from 'react'; import { render } from 'react-dom'; class App extends React.Component { constructor(props) { super(props); this.callRefInput = null; this.setInputRef = element => { this.callRefInput = element; }; this.focusRefInput = () => { //Focus the input using the raw DOM API if (this.callRefInput) this.callRefInput.focus(); }; } componentDidMount() { //autofocus of the input on mount this.focusRefInput(); } render() { return ( <h2>Callback Refs Example</h2> ); } } export default App;
Iepriekš minētajā piemērā React izsauks “ref” atzvanu, lai saglabātu atsauci uz ievades DOM elementu, kad komponents stiprinājumi , un kad komponents nomontē , sauc to ar null . Atsauces vienmēr ir aktuāls pirms komponentsDidMount vai komponentsDidUpdate ugunsgrēki. Atzvanīšanas atsauču pārraide starp komponentiem ir tāda pati kā jūs varat strādāt ar objekta refs, kas tiek izveidota ar React.createRef().
Izvade
Ref pārsūtīšana no viena komponenta uz citu komponentu
Atsauces pārsūtīšana ir paņēmiens, ko izmanto, lai nokārtotu a ref caur komponentu uz vienu no tā pakārtotajiem komponentiem. To var veikt, izmantojot React.forwardRef() metodi. Šī tehnika ir īpaši noderīga ar augstākās kārtas sastāvdaļas un īpaši izmantots atkārtoti lietojamu komponentu bibliotēkās. Visizplatītākais piemērs ir sniegts zemāk.
Piemērs
import React, { Component } from 'react'; import { render } from 'react-dom'; const TextInput = React.forwardRef((props, ref) => ( )); const inputRef = React.createRef(); class CustomTextInput extends React.Component { handleSubmit = e => { e.preventDefault(); console.log(inputRef.current.value); }; render() { return ( this.handleSubmit(e)}> Submit ); } } export default App;
Iepriekš minētajā piemērā ir komponents Teksta ievade kura ievades laukā ir bērns. Tagad, lai nodotu vai pārsūtītu ref līdz ievadei, vispirms izveidojiet atsauci un pēc tam nosūtiet savu atsauci uz . Pēc tam React pārsūta atsauci uz uz priekšuRef darbojas kā otrs arguments. Tālāk mēs pārsūtām šo atsauces argumentu uz . Tagad DOM mezgla vērtībai var piekļūt vietnē inputRef.current .
Reaģēt ar useRef()
Tas tiek ieviests Reaģēt 16.7 un augstāka versija. Tas palīdz piekļūt DOM mezglam vai elementam, un pēc tam mēs varam mijiedarboties ar šo DOM mezglu vai elementu, piemēram, fokusēt ievades elementu vai piekļūt ievades elementa vērtībai. Tas atgriež ref objektu, kura .strāva rekvizīts, kas inicializēts nodotajam argumentam. Atgrieztais objekts saglabājas visu komponenta kalpošanas laiku.
Sintakse
const refContainer = useRef(initialValue);
Piemērs
Zemāk esošajā kodā useRef ir funkcija, kas tiek piešķirta mainīgajam, inputRef , un pēc tam pievienots atribūtam ar nosaukumu ref HTML elementā, uz kuru vēlaties atsaukties.
function useRefExample() { const inputRef= useRef(null); const onButtonClick = () => { inputRef.current.focus(); }; return ( Submit ); }