Code icon

REACT - Use State

Links


    // 1 ERROR EXAMPLE
    import React from "react";
    
    const ErrorExample = () => {
    let title = "random title";
    const handleClick = () => {
    title = "hello people";
    console.log(title);
    };
    return (
    <React.Fragment>
        <h2>{title}</h2>
        <button type="button" className="btn" onClick={handleClick}>
            Change title
        </button>
    </React.Fragment>
    );
    };
    
    export default ErrorExample;
    


    // 2 - USE STATE - BASICS
    import React, { useState } from "react";
    
    const UseStateBasics = () => {
    // console.log(useState("Hello world"));
    // const value = useState(1)[0];
    // const handler = useState(1)[1];
    // console.log(value, handler);
    
    const [text, setText] = useState("random title");
    const handleClick = () => {
    if (text === "random title") {
    setText("hello world");
    } else {
    setText("random title");
    }
    };
    return (
    <React.Fragment>
        <h1>{text}</h1>
        <button type="button" className="btn" onClick={handleClick}>
            Change title
        </button>
    </React.Fragment>
    );
    };
    
    export default UseStateBasics;
    


    // 3- USESTATE - ARRAY
    import React from "react";
    import { data } from "../../../data";
    
    const UseStateArray = () => {
    const [people, setPeople] = React.useState(data);
    
    const removeItem = (id) => {
    let newPeople = people.filter((person) => person.id !== id); //all the items with different ID are added to the array
    (eliminates the one we want to eliminate)
    setPeople(newPeople);
    };
    
    return (
    <>
        {people.map((person) => {
        const { id, name } = person;
        return (
        <div key={id} className="item">
            <h4>{name}</h4>
            <button onClick={()=> removeItem(id)}>remove</button>
        </div>
        );
        console.log(person);
        return "hello";
        })}
        <button className="btn" onClick={()=> setPeople([])}>
            clear items
        </button>
    </>
    );
    };
    
    export default UseStateArray;


    


    // 4 - USESTATE - OBJECT

    import React, { useState } from "react";
    
    const UseStateObject = () => {
    const [person, setPerson] = useState({
    name: "peter",
    age: 24,
    message: "random message",
    });
    
    console.log(person);
    // const [name,setName] = useState('peter')
    // const [age,setAge] = useState(24)
    // const [message,setMessage] = useState('random message')
    
    const changeMessage = () => {
    setPerson({ ...person, message: "hello world" });
    // setMessage('hello world')
    };
    return (
    <>
        <h3>{person.name}</h3>
        <h3>{person.age}</h3>
        <h4>{person.message}</h4>
        <button className="btn" onClick={changeMessage}>
            change message
        </button>
    </>
    );
    };
    
    export default UseStateObject;


    


    // 5 - USESTATE - COUNTER
    import React, { useState } from "react";
    
    const UseStateCounter = () => {
    const [value, setValue] = useState(0);
    
    const reset = () => {
    setValue(0);
    };
    
    const complexIncrease = () => {
    setTimeout(() => {
    // setValue(value + 1);
    setValue((prevState) => {
    return prevState + 1;
    });
    }, 2000);
    };
    
    return (
    <>
        <section style={{ margin: "4rem 0" }}>
            <h2>regular counter</h2>
            <h1>{value}</h1>
            <button className="btn" onClick={()=> setValue(value - 1)}>
                decrease
            </button>
            <button className="btn" onClick={reset}>
                reset
            </button>
            <button className="btn" onClick={()=> setValue(value + 1)}>
                increase
            </button>
        </section>
        <section style={{ margin: "4rem 0" }}>
            <h2>more complex counter</h2>
            <h1>{value}</h1>
            <button className="btn" onClick={complexIncrease}>
                increase later
            </button>
        </section>
    </>
    );
    };
    
    export default UseStateCounter;


    


    // <

    


    // <

    


    // <

    


    // <

    


    // <