react(9)
-
react hooks의 등장으로 거의 대체된 render props 방식
Render Props는 리액트에서 컴포넌트 간에 코드 재사용을 쉽게 하기 위한 패턴이다. 주로 함수형 컴포넌트에서 사용되며, 컴포넌트의 props로 함수를 전달받아 렌더링 동작을 동적으로 정의할 수 있다. Render Props 기본 예제 function DataFetcher({ render }) { const data = { name: 'Alice', age: 25 }; // 가상의 데이터 return {render(data)};}function App() { return ( Name: {data.name}, Age: {data.age}} /> );}DataFetcher 컴포넌트는 render라는 prop으로 함수를 받는다.이 함수는 데이터를 렌더링할..
2024.11.26 -
React로 타이머 hooks 간단히 개발하기
import React, { useRef, useState } from 'react';export const useTimer = () => { const [time, setTime] = useState(0); const [isRunning, setIsRunning] = useState(false); const intervalRef = useRef(); const startTimer = () => { if (!isRunning) { setIsRunning(true); intervalRef.current = setInterval(() => { setTime(prevTime => prevTime + 1); }, 1000); } }; const..
2024.11.18 -
useEffect === componentWillUnMount || componentDidMount || componentDidUpdate
useEffect()는 componentWillUnMount, componentDidMount, componentDidUpdate의 속성을 모두 가지고 있다 component가 처음 렌더링되면 useEffect()의 첫번째 인자로 들어가는 함수가 didMount에 해당하여 바로 실행된다 useEffect()의 두번째 인자에는 의존성이 들어가는데, 의존성은 처음 페이지가 렌더링 된 후 상태가 변화하는 값을 의미하며 배열 형태로 입력한다 의존성이 있다면, 해당 상태가 변화할 때마다 useEffect()의 첫번째 인자가 didUpdate로서 실행되고, 의존성이 빈배열이라면 첫번째 인자는 다시 실행되지 않는다 두번째 인자가 아예 비어 있다면 첫번째 인자는 매번 업데이트 된다(따라서 빈배열이라도 꼭 넣을 것) 마..
2020.09.09 -
[Complex State] useState가 중복되면 {}로 관리한다
성과 이름 2개의 input을 가지고, 입력값을 실시간으로 태그에 보여주는 App이 있다. 물론 아래와 같이 useState를 input마다 할당할 수 있지만, 계속 함수가 중복됨을 볼 수 있다. import React, { useState } from "react"; function App() { const [fName, setfName] = useState(""); const [lName, setlName] = useState(""); function handlefNameChange(e) { setfName(e.target.value) } function handlelNameChange(e) { setlName(e.target.value) } return ( Hello {fName} {lName} S..
2020.05.24 -
[Controlled Component] 서로 같은 변화를 담당하는 HTML 요소들은 같은 출처의 state 변수를 value로 갖는다
React를 사용한다면, HTML 요소들을 태그로 묶어 한번에 렌더링할 때 어떤 변수의 값에 따라 UI가 변하기 마련이다. 여기서 "어떤 변수"는 보통 의 을 통해 유저로부터 받은 값을 같은 태그에 업데이트 시키는 데 사용되는 변수, 즉 state 변수를 의미한다. (ex. isLogin의 값이 true일 때 버튼의 value가 logout으로 바뀐다면, 여기서 state변수는 isLogin) 이때 업데이트 value를 담은 과 value를 반영한 은 같은 state 변수로 통일해야 한다. 이를 "신뢰 가능한 단일 출처"라고 한다. // App.jsx import React, { useState } from "react"; function Login() { const [isLogin, setLogin] ..
2020.05.24 -
[Hook] 유저와의 UI 반응을 위한 상태관리 with Functional Components
UI = function (state) 물은 얼음과 같은 성분이지만, 온도에 따라 다른 상태를 가진다. 마찬가지로, React Component(ex. )는 요소 자체는 그대로이지만, 상태를 담당하는 변수의 값에 따라 다른 UI를 가진다. React에서 UI를 변경하는 데에는 Declarative Programming과 Imperative Programming 2가지 방식이 있다. Declarative는 .jsx(js) 파일 상단에서 선언했던 상태 저장용 변수를, UI 변경을 담당하고자 만든 커스텀 함수의 body에서 변형시킴으로써(true->false처럼 toggle을 쓰는 등) 목적을 달성하는 방법이다. Imperative는 document.querySelector 등으로 해당 HTML 요소에 접근하..
2020.05.23