IlanZiin

#044 USECALLBACK

Sep 23rd, 2022
1,104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. App.jsx
  2.  
  3. import React, { useState, useCallback } from 'react'
  4. import Lista from './Lista'
  5.  
  6. export default function App(){
  7.  
  8.     const [escuro, setEscuro] = useState(false)
  9.     const [numero, setNumero] = useState(1000)
  10.  
  11.     /*const calculos = () => {
  12.         return [numero*2, numero*3, numero*4]
  13.     }*/
  14.  
  15.     const calculos = useCallback(() => {
  16.         return [numero*2, numero*3, numero*4]
  17.     }, [numero])
  18.  
  19.     const tema = {
  20.         backgroundColor: escuro ? "black" : "white",
  21.         color: escuro ? "white" : "black",
  22.         height: "100vh"
  23.     }
  24.  
  25.     return (
  26.         <div style={tema}>
  27.             <h1>React - useCallback</h1>
  28.             <hr />
  29.             <button onClick={() => setEscuro(old => !old)}>Tema</button>
  30.             <p>Numero: {numero}</p>
  31.             <button onClick={() => setNumero(oldNumero => oldNumero + 1)}>Incrementar</button>
  32.             <hr />
  33.             <Lista resultados={calculos}></Lista>
  34.         </div>
  35.     )
  36. }
  37.  
  38. Lista.jsx
  39.  
  40. import React, { useEffect, useState } from 'react'
  41.  
  42. export default function Lista({resultados}){
  43.     const [listaItems, setListaItems] = useState([])
  44.  
  45.     useEffect(() => {
  46.         setListaItems(resultados())
  47.         console.log('render')
  48.     }, [resultados])
  49.  
  50.     return (
  51.         listaItems.map(item => <p key={item}>{item}</p>)
  52.     )
  53. }
Advertisement
Add Comment
Please, Sign In to add comment