Felhasználói eszközök

Eszközök a webhelyen


oktatas:telefon:react_native:kampok

< React Native

Kampók

Állapot kampók

A horgok (vagy kampók) React 16.8 verzióban jelentek meg.

useState

A useState egy horog, amit függvény egy függvénybe írva állapotokat tárolhatunk, amíg a képernyő újrarendelődik.

A useState egy párt ad vissza. Az egyik része az állapot, a másik egy függvény amivel beállíthatjuk az állapotot.

A függvényt meghívhatjuk bárhol. A függvénynek van egy bemenő paramétere, amely meghatározza a kezdeti értéket.

function valami() {
    const [name, setName] = useState('Névtelen');
    const [city, setCity] = useState('ismeretlen');
    const [salary, setSalary] = useState(2350000);
    const [degree, setDegree] = useState([]);
}

Horgokat nem használhatunk osztálykomponensekben, éppen a React használatát teszik lehetővé osztály nélkül.

Importálás

import {useState} from 'react';
 
export default function App() {
  const [counter, setCounter] = useState(0);
  return (<View></View>);
}
import React from 'react';
 
export default function App() {
  const [counter, setCounter] = React.useState(0);
  return (<View></View>);
}

useEffect

Mellékhatások elvégzésére kitalált függvény.

Célja a felület megjelenítését elválasztani a mellékhatással járó tevékenységekkel. A felület megjelenítése és frissítése folyamatosan történik. A mellékhatásnál ezt nem szeretnénk.

Például adatlehívás, feliratkozás, DOM változtatása React komponensből.

  useEffect(() => {
    fetch(dataURL)
    .then((response) => response.json())
    .then((data) => {
      setData(data.friends);
      setTitle(data.title);
      setDesc(data.desc);
    })
    .catch((error) => alert(error))
    .finally(()=>setLoading(false));
  }); 

Ha a letöltött adat egy tömb:

  const [isLoading, setLoading] = useState(true);
  const [data, setData] = useState([]);
  useEffect(() => {
    fetch(dataURL)
    .then((response) => response.json())
    .then((data) => {
      setData(data);
    })
    .catch((error) => alert(error))
    .finally(()=>setLoading(false));
  }, []); 

Függőség megadása

A useEffect() második paramétereként megadott függőség a counter. Ha a caounter változik, akkor lefut a useEffect() első paraméterében megadott névtelen függvény.

    const [counter, setCounter] = useState(0);
 
    useEffect(() => {
        console.log(counter.toString())
    }, [counter]);

A második paraméter egy tömb. Ha üresen hagyjuk, akkor csak a komponens inicializálásakor fut le.

Szabályok

Horgokat nem hívhatunk csak a legfelsőbb szinten. A horgokat csak React függvényekből hívjuk.

Kezdőérték

const [images, setImages] = useState([
  require('./assets/kep1.png'),
  require('./assets/kep2.png'),
  require('./assets/kep3.png'),
  require('./assets/kep4.png'),
  require('./assets/kep5.png')
]);
  const [images, setImages] = useState([
    {src:require('./assets/kep1.png'),key:'1'},
    {src:require('./assets/kep2.png'),key:'2'},
    {src:require('./assets/kep3.png'),key:'3'},
    {src:require('./assets/kep4.png'),key:'4'},
    {src:require('./assets/kep5.png'),key:'5'}
  ]);

Példa a listában felhasználva:

<FaltList
    data={images}
    renderItem={ ({image) => (
        <Image 
            source={image.src}
            style={{
                width: 200,
                height: 200,
                resizeMode: 'contain',
            }}
        />
    )}
/>
oktatas/telefon/react_native/kampok.txt · Utolsó módosítás: 2024/03/02 20:26 szerkesztette: admin