Header Ads Widget

Responsive Advertisement

Ticker

6/recent/ticker-posts

React proyecto

  "scripts": {
    "dev": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
start cambiamos por dev en scrript

yarn dev ejecuta toda la aplicaciòn , primero nos fijamos en instalar yarn -

En src creamos una carpeta img y colocamos las imagenes
import imageAlexTech from "./img/logo claro.png";
import './App.css';
import { useState } from "react";

function App() {
  const [characters , setCharacters] = useState(null);
 
  // const reqApi = lo volvemos asincrono() =>{
  //   console.log("Clicking");
  // }
  const reqApi = async () =>{
  const api = await fetch("https://rickandmortyapi.com/api/character");
  const characterApi = await api.json();
  // console.log(characterApi);
  setCharacters(characterApi.results);

  // console.log(api);
  // console.log(characterApi);
}
console.log(characters);

  return (
    <div className="App">
      <header className="App-header">
        <h1 className="title">ALEX TECHNOLOGY API</h1>
        <img src={imageAlexTech} alt='alex javier brito muñoz' className='img-home'/>
        <button onClick={reqApi} className="btn-search">BUSCAR</button>
        Buscar personajes
      </header>
    </div>
  );
}

export default App;

En src creamos una carpeta componeent creamos un archivo Character.js.
Character.js
export default function Characters(){
    return(
        <div>
            <h1>Desde characters JS</h1>
        </div>
    )
}
Aplicando ternarios
Characters.js
export default function Characters(props){
    console.log(props);
    return(
        <div>
            <h1>Desde characters JS</h1>
        </div>
    )
}
App.js
 <h1 className="title">ALEX TECHNOLOGY API</h1>
        <Characters characters={characters}/>
Cuando el use state characters este lleno contenga algo componentes de caracters , cuando no : 2 puntos carga el fragment carga img y button y encapsulamos en un fragment.
<header className="App-header">
        <h1 className="title">ALEX TECHNOLOGY API</h1>
        {characters ? (
           <Characters characters={characters} />
         ) : (
          <>
          <img src={imageAlexTech} alt='alex javier brito muñoz' className='img-home'/>
          <button onClick={reqApi} className="btn-search">BUSCAR</button>
          </>
        )}
      </header>
Recorreindo datos que vienen de la API
<div className="characters">
            <h1>Personajes</h1>
            <span className="back-home">Volver a Home</span>
            <div className="container-characters">
                {characters.map((character ,index)=>(
                    <div className="character-container" key={index}>
                        <p>{character.name}</p>
                    </div>
                ))}
            </div>
        </div>
Poniendo estilos a bloques
<div className="characters">
            <h1>Personajes</h1>
            <span className="back-home">Volver a Home</span>
            <div className="container-characters">
                {characters.map((character ,index)=>(
                    <div className="character-container" key={index}>
                        {/* <p>{character.name}</p> */}
                        <div>
                            <img src={character.image} alt={character.name} />
                        </div>
                        <div>
                            <h3>{character.name}</h3>
                            <h6>
                                {character.status === "Alive" ? (

                                    <>
                                    <span className="alive"/>
                                    Alive
                                    </>
                                ) : (
                                    <>
                                    <span className="dead"/>
                                    Dead
                                    </>
                                )}
                            </h6>
                            <p>
                                <span className="text-grey">Episodios:</span>
                                <span>{character.episode.length}</span>
                            </p>
                        </div>
                    </div>
                ))}
            </div>
        </div>
Detalles
<p>
                                <span className="text-grey">Episodios: </span>
                                <span>{character.episode.length}</span>
                            </p>
                            <p>
                                <span className="text-grey">Especie: </span>
                                <span>{character.species}</span>
                            </p>
Enlace volver a Home
App.js
export default function Characters(props){
    const {characters , setCharacters} = props;
    const resetCharacters = ()=>{
        setCharacters(null);

   <h1 className="title">ALEX TECHNOLOGY API</h1>
        {characters ? (
           <Characters characters={characters} setCharacters={setCharacters}/>
Character.js
export default function Characters(props){
    const {characters , setCharacters} = props;

<h1>Personajes</h1>
            <span className="back-home" onClick={resetCharacters}>Volver a Home</span>

))}
            </div>
            <span className="back-home" onClick={resetCharacters}>Volver a Home</span>
        </div>