| 리덕스 미들웨어 리덕스 미들웨어는 action을 dispatch 했을 때 reducer 에서 처리하기에 앞서 사전에 지정된 추가적인 작업을 실행할 수 있게 해줍니다. 즉, 중간역할 을 담당한다고 생각하시면 됩니다! 일반적으로 리덕스 미들웨어는 라이브러리를 설치하여 사용하며, 주로 비동기 작업을 처리 할 때 사용됩니다. 라이브러리의 종류로는 redux-thunk redux-saga redux-observable redux-promise-middleware 등이 있습니다. 이 중 자주 사용되는것은 redux-thunk 와 redux-saga 입니다. 흐름 액션 -> 미들웨어 -> 리듀서 -> 스토어 추가적은 작업의 종류 특정 조건에 따라 action 을 무시하게 만들 수 있습니다. 액션을 콘솔에 출력 O..
프로젝트에 리덕스를 적용하기 위해 리덕스 모듈을 만들어 보겠습니다. | 리덕스 모듈이란 ? 구성요소 액션타입 액션 생성함수 리듀서 위와 같이 리덕스 모듈을 사용하기 위해 총 3가지 항목이 존재합니다. 첫 번째 리덕스 모듈.js //액션 타입 만들기 //Ducks 패턴을 따를땐 액션의 이름에 접두사를 넣어주세요, // -> 다른 모듈과 액션 이름이 중복되는 것을 방지할 수 있습니다. const SET_DIFF = 'counter/SET_DIFF'; const INCREASE = 'counter/INCREASE'; const DECREASE = 'counter/DECREASE'; //액션 생성함수 만들기 export const setDiff = (diff) => ({ type: SET_DIFF, diff }..
리덕스를 사용하게 될 때 앞으로 접하게 될 keyword 입니다. | 1. Action 상태에 어떠한 변화가 필요하게 되면, action을 발생시킵니다. (= 하나의 객체) { type:"TOGGLE_VALUE" } 위와 같은 객체형태로 이루어져있습니다. 액션 객체는 type 필드를 필수적으로 갖고 있어야 하며, 그 이외 속성값들은 개발자가 마음대로 추가할 수 있습니다. 예를들어, { type:"ADD" ,data : { id : 0 ,text : "이런식으로 말이죠 " } } 위와 같은 방법으로 구성할 수 있습니다. | 2. 액션 생성함수 (Action Creator) 액션 생성함수는, 액션을 만드는 함수입니다. 단순히 파라미터를 받아와서 액션 객체 형태로 만들어줍니다. export funtion ad..
| Route 사용자가 요청하는 주소에 따라 다른 컴포넌트를 보여줘야할 때 Route 라는 컴포넌트를 사용합니다. 사용 위와 같은 방법으로 사용합니다. 하지만, import logo from './logo.svg'; import './App.css'; import { Route } from 'react-router-dom'; import Home from './Home'; import About from './About'; function App() { return ( ) } export default App; 위와 같은 코드를 작성하면 / 경로에서는 About 컴포넌트를 잘 보여주지만, /asd 경로로 들어가면 About 컴포넌트와 함께 보여집니다. 이유는, /asd 경로가 / 규칙과도 일치하기 때문에..
polished의 스타일 관련 유틸 함수 사용하기 Sass를 사용 할 때에는 lighten() OR darken() 과 같은 유팅 함수를 사용하여 색상에 변화를 줄 수 있었습니다. CSS in JS 에서도 비슷한 유팅 함수를 사용하고 싶다면 polished 라는 라이브러리를 사용하면 됩니다. polished 사용 $ yarn add polished ThemeProvider 사용 styled-components 로 만드는 모든 컴포넌트에서 조회하여 사용 할 수 있는 전역적인 값을 설정해보겠습니다. const AppBlock = styled.div` width : 512px; margin : 0 auto; margin-top : 4rem; border : 1px solid black; padding : 1r..
| 클래스형 컴포넌트 클래스형 컴포넌트는 함수형 컴포넌트보다 사용이 덜 합니다. 하지만 프로젝트의 유지보수를 위해 알아봅시다 ! 함수형Hello.js import React form 'react; function Hello ( { color, name, isCheck } ){ return ( { dispathc({ type : "start' }). }; 하지만 클래스형 컴포넌트에서는 render 함수 내부터에서 선언은 할 수 있기는 하지만, 일반적으로 그렇게 하지 않고 클래스 안에 커스텀 메서드를 선언합니다. class Example extends Component { Count(){ console.log("내부선언 메서드"); } } render(){ return ( 카운트 실행 } } export d..
| Immer 란 ? 리액트에서 배열이나 객체를 업데이트 해야 할 때 직접 수정은 절대 하면 안되며, 불변성을 지켜주어야 합니다. 직접 수정하는 경우 const a = { a: 1, b: 2 }; a.a = 4; 이런 방법을 다음과 같이 업데이트 해야합니다. const a = { a: 1, b: 2 }; const change = { ...a, b:3 }; 배열도 마찬가지로 push,splice등 함수를 사용하거나 n 번째 항목을 직접 수정하면 안되며 concat, filter, map 함수를 이용하여 생성해야합니다. spread연산자( = ... 연산자) 는 구조가 deep할수록 코드가 조금 복잡해집니다. 따라서, immer라는 라이브러리를 사용하여 구현하면 보다 쉽게 가독성이 높은 코드로 구현할 수 ..
| Context API 란 ? ContextAPI는** "징검다리"** 같은 역할을 해줍니다. 특정 함수를 특정 컴포넌트를 거쳐 원하는 컴포넌트에게 전달하는 작업은 리액트로 개발하다보면 자주 발생하는데요, Componet 1개 정도는 큰 불편함이 없지만, 여러개의 컴포넌트를 거쳐 전달하게 된다면 어떻게 될까요? 이럴경우에 Context API를 사용하여 전달하면 매우 편리하게 전역으로 전달할 수 있습니다. | Context API 사용 React.createContext(null); Context를 생성할때는 다음과 같이 React.createContext() 를 사용하여 만듭니다. 파라미터값으로는 Context의 기본값이 되며, Context의 value값을 찾을 수 없을 때 기본값이 사용됩니다. 기..