React 기본 문법, styled-component 사용

2021. 12. 22. 14:23Front End

배열 수정하기

  • 배열뒤에 ,(컴마) 찍고 입력
  • 뒤에 오는값으로 덮어 씌움
const data = {phone: "2222"}
const a6 = {id: 1, name: "홍길동", phone: "1111", age: 17, gender: "male"};
const b6 = {...a6, ...data};
console.log(b6)

const users = [
    {id: 1, name: "가가", phone: "2222"},
    {id: 2, name: "나나", phone: "3333"},
    {id: 3, name: "다다", phone: "4444"}
];

const updateUserDto = {
    id: 2, name: "홍길동"
};
const newUsers =
        users.map(u => u.id === updateUserDto.id ? {...u, ...updateUserDto} : u); // const newUser = {...users}

 

useState

상태값을 변경해줌

function App() {

    // let number = 1; //상태값 아님
    const [number, setNumber] = useState(2);//React 안에 hooks 라이브러리 상태값이 됨.

    const add = () => {
        setNumber(number + 1) //리엑ㅌ트에 number 값 변경 요청
        console.log('add', number);
    };


    return (
        <div>
            <h1>숫자 : {number}</h1>
            <button onClick={add}>더하기</button>
        </div>
    )
};

export default App;

 

useEffect

  • 실행시점
    • 1. App()함수가 최초 실행될 때(마운트 될때)
    • 2. 상태 변수가 변경될 때 (dependencyList에 등록해야함)
    • 3. 의존 리스트로 괄리 가능.
  • 의존성자리를 비우면 최초 한번만 실행 가능.
function App() {

    const [data, setData] = useState(0);
    const [search, setSearch] = useState(0);

    const download = () => {
        let downloadData = 5;
        setData(downloadData);
    }

    useEffect(() => {
        console.log("useEffect 실행됨");
        setData(5);
        download();
    }, [search]);

    return (
        <div>
            <button onClick={() => {
                setSearch(2);
            }}>검색하기
            </button>
            <h1>데이터 : {data}</h1>
            <button onClick={() => {
                setData(data + 1)
            }}>더하기
            </button>
        </div>
    )
};

 

useMemo

  • 메모라이제이션(기억)
  • 리액트 hooks 라이브러리
  • 함수를 기억해서 과한 연산을 막음.
function App() {

    const [list, setList] = useState([1, 2, 3, 4]);
    const [str, setStr] = useState("합계");


    const getAddResult =
        () => {
            let sum = 0;
            list.forEach(i => sum = sum + i);
            console.log("sum", sum)
            return sum;
        }
    const addResult = useMemo(() => getAddResult(), [list])

    return (
        <div>
            <button onClick={() => {
                setStr('안녕')
            }}>문자 변경
            </button>
            <button onClick={() => {
                setList([...list, 10])
            }}>리스트값 추가
            </button>
            <div>
                {list.map(i => <h1>{i}</h1>)}
            </div>
            <div>{str} : {addResult}</div>
        </div>
    )
};

 

useRef

  • dom을 변경할 떄 사용
  • function App() {
    
        const myRef = useRef(null);
    
        const [list, setList] = useState
        ([{id: 1, name: "길동"},
            {id: 2, name: "꺽정"}]);
        const myRefs = Array.from({length: list.length}).map(() => createRef());
    
        return (
            <div>
                <button onClick={() => {
                    //myRef.current.style.backgroundColor = 'red';
    
                    myRefs[0].current.style.backgroundColor = 'red';
    
                }}>색 변경
                </button>
                <div ref={myRef}>박스</div>
                {list.map((user, index) => (
                    <h1 ref={myRefs[index]}>{user.name}</h1>
                ))}
            </div>
        )
    };

 

components styled

  • 파일 내부 스크립트 부분에서 스타일 변경 가능
  • 기존 css 문법 그대로 사용가능.
  • 동적 스타일 적용 가능.
    • npm install --save styled-components
const Title = styled.h1`
  font-size: 1.5em;
  text-align: center;
  color: palevioletred;
`;

http 요청 방법 : fetch, axios

 

'Front End' 카테고리의 다른 글

React 글쓰기, 글 목록 보기 실습  (0) 2021.12.22
react-router-dom 기본 사용  (0) 2021.12.22
React 1일차.  (0) 2021.12.22
jQuery  (0) 2021.09.23
JavaScript 2.  (0) 2021.09.23