본문 바로가기

react44

[220502] redux로 전역상태 관리하는 기초세팅 state 관리를 위한 redux 액션이란 이벤트를 통해 상태를 관리하고 업데이트하기 위한 패턴 및 라이브러리인 redux. 예측 가능한 방식으로만 업데이트 될 수 있도록 하는 규칙과 함께 전체에서 사용해야 하는 상태에 대한 중앙저장소 역할을 함. Context API와 비슷한데 왜 Redux를 더 많이 사용할까? 1. 전체적으로 사용하는 state가 언제 어디서 어떻게 업데이트 되는지 자세하게 추적이 가능하다. 2. Context API와 다르게 redux는 미들웨어가 있어서 비동기처리가 가능하다. redux의 reducer가 state를 바로 반환하지 못하고, 미들웨어를 거쳐야 반환이 가능하다 예) 로그인 시도 -> 미들웨어 (성공액션, 실패액션, 에러액션) -> 결과에 따른 state 반환 Redu.. 2022. 5. 9.
[220502] styled-component 사용하기 디렉토리의 역할 src component - 공통적으로 들어갈 컴포넌트 모음 hook - 훅에 관련된 내용을 넣는 컴포넌트 pages - 화면에 출력할 영역을 넣음 reducer - reducer 모음 (useReducer가 아닌 redux 관련) store - Context와 같이 전역상태를 만들어주는 디렉토리 컴포넌트별로 기능을 부여할 수 있는 리액트 특성상 디렉토리는 파일 정리 이상의 의미를 가진다. 보통 기능별로 이렇게 디렉토리를 나누니 가이드 삼자. styled-component 설치하기 $ npm install styled-components styled-components 세팅하기 import styled from 'styled-components' styled-components 사용하기 .. 2022. 5. 8.
[220429] useContext + ContextAPI 로 전역상태 관리하기 context란? React 컴포넌트 트리 안에서 전역적(global)이라고 볼 수 있는 데이터를 공유할 수 있도록 고안된 방법이다. 원래 리액트에서는 부모 컴포넌트에서 자식 컴포넌트에게 props로 값을 넘겨주는 방식으로 데이터를 공요할 수 있었다. useContext const value = useContext(MyContext); 만들 리액트 부모관계 구조도 천천히 어떤 순서로 이 구조를 만드는지 이해하는게 목표 Store/Context.jsx - export하는 방법에 따른 import하는 형태의 차이 // Context.jsx // ES6 모듈 export default Store //바로 사용가능 export const a = 10 //객체로 나감 // NodeJS 모듈 module.expor.. 2022. 5. 6.
[220428] useReducer useReducer가 나오게 된 배경 react로 전역상태를 만들기 위해 반드시 사용해야할 redux react-redux 이렇게 부를 정도로 긴밀한 관계다. 하지만 redux의 단점은 사용할수록 코드가 복잡해지고 계속해서 컴포넌트로 감싸는 wrapper지옥을 만드는 것이다. 이런 단점을 보완하기 위해 hook이 나오면서 react팀은 redux의 reducer를 따로빼서 기능으로 만들었다. 전역상태를 하기 위해 원래 redux에서 사용했던 reducer기능을 가져온것. ( 상태를 바꾸는 코드를 몰아넣을 수 있는게 reducer ) redux의 단점 const [info,setInfo] = useState( { user:{ userid:'', userpw:'', username:'' }, notice:{.. 2022. 5. 6.
[220428] React.memo / useMemo / useCallback / Context 리액트의 개념&흐름 정리 JSX코드로 소통하는 리액트 리액트 앱에서는 컴포넌트를 통해 작업을 수행한다 컴포넌트는 하나의 작업을 수행하며 JSX코드를 반환한다. 왜? 리액트가 JSX코드를 알아들으니까. state의 변화로 바뀌는 props, 전역변수 context 컴포넌트에서 state, props, context로 작업하고, props는 사실 state의 변화로 생성되는 값이다. context는 리액트에서 전역적으로 사용되는 변수라고 보면된다. state의 변화가 일어날때마다, 컴포넌트의 변화나 컴포넌트에게 영향을 주는, 어플리케이션 일부에 영향을 미치는 데이터를 변경하게 된다. 컴포넌트에서 state를 변경할 때마다 변경된 state가 있는 컴포넌트는 재평가된다. = 컴포넌트 함수 재실행 재평가된 결과.. 2022. 5. 5.
[220427] 코드의 분리 코드 분리 코드를 분리해 4월46일에 만든 로그인기능을 유지해보았다. 다른 컴포넌트처럼 import로 가져올 수 있고, export default로 내보낼 수 있다. // 내보낼때 export default useForm // 가져올때 import useForm from './useForm.jsx' 비동기 코드 넘기기 중간에 상태값이 바뀌어서 재실행될때 코드는 비동기적으로 움직인다. 올바르게 회원가입을 했을때 1초후에 가입한 정보를 띄우는 비동기적 코드를 작성해보았다. // 강제적으로 비동기 코드를 작성 // submit을 클릭했을때 items를 최신상태로 바꾸기 const request = async (items) => { const result = await new Promise((resolve,re.. 2022. 5. 4.
[220426] 회원가입창 만들기 / useEffect React의 목적 리액트는 UI를 렌더링하는 것이 목적이다. 또한 사용자의 입력에 반응하여 필요할때 UI를 다시 렌더링하는것이다. 일반적인 컴포넌트 함수들이 이에 해당하며 리액트에 의해 재실행된다. useEffect의 목적 화면에 무언가를 그리는 것애 관한 직접적인 행동들이 아닌것들을 Side Effect라고한다. Hook 속해있는 함수이며 보통 이펙트라고 한다. useEffect는 이런 이펙트 들을 처리하는것이 목표이다. (http 리퀘스트 등등..) useEffect의 구조 loop(무한반복)이 되기 쉽기때문에 return() 바깥쪽에 위치한다. useEffect( ()=>{}, [] ); useEffect의 첫번째 인자는 함수형태이며, 모든 컴포넌트 실행이 끝난 후 실행이 된다. (코드를 위에서부.. 2022. 5. 3.
[220426] 회원가입창 만들기 / useState useState (state,function)이 실행되는 구조 첫째 인자값은 state를 초기화하는 값 state를 배열로 만들며 state[0]에 'aa'값이 들어가있다. const state = React.useState('aa') //['aa', ()=>]와 같다 console.log(state[0]) //aa 두번째 인자값은 state를 변화할때 실행할 함수 console.log(state[1])를 해보면 function 형태가 나오는 것을 볼 수 있다. 따라서 두번째 인자값엔 함수형이 들어간다고 볼 수 있다. const Form = () => { const state = React.useState('aa') console.log(state[0]) const handleSubmit = (e) =>.. 2022. 5. 3.
[220425] 함수컴포넌트로 로그인기능 생성, props 값 넘기기 클릭시 비활성화되고, 1초 후 활성화되는 버튼 만들기 import React,{useState} from 'react' //함수형 컴포넌트니까 this를 사용하지 못하니까 useState로 state를 만든다 //한번에 두가지 값 처리를 위해서 객체로 넣는다 const [values,setValues] = useState({email:'',password:''}) //초기값 넣기 const [submit,setSubmit] = useState(false) //버튼클릭유뮤를 담는 변수 const Login = () => { const {name, value} = e.target const handleChange = (e) => { console.log(e.target.name, e.target.values.. 2022. 5. 2.
[220425] 함수형 컴포넌트, Hook, useState, useEffect 단번에 리액트 시작하기 //function은 임의로 정한 디렉토리명 $ npx create-react-app function $ cd function $ npm run start 자바스크립트와 리액트의 함수 //자바스크립트식 function a(){ console.log('hello world') } a() //리액트식 function A(){ return Hello world } 객체를 만드는 리액트 //JSX ->(babel)-> Javascript //클래스 문법, 객체를 만듬 //컴포넌트의 목적은 객체라고도 할 수 있다 class App extends React.Component{ render(){ return( 버튼1 버튼2 ) } } //이런식으로 객체 만듬 { type:'span', prop.. 2022. 5. 1.