JavaScript - 문자열 공백 제거, 3가지 방법
npm install uuid
yarn add uuid
import {v4 as uuidv4} from ‘uuid’;
uuidv4( )
👉 기존에 많은 컴포넌트에서 참조하고, 관리/수정됐던 state
store라는 저장소에 모아놓고 관리하자!
- Store : state, state들을 관리할 수 있는 메서드(reducer)가 들어있다.
- Reducer : state를 변경하는 함수들(메서드)
UI(컴포넌트) → Dispatch
Dispatch → Store
Store → UI
state의 구분
state -> 컴포넌트 단위
state -> 전역 (global)
👉 모든 state가 store에서 관리된다?
- No! 지역적으로 관리하는 state도 있을 수 있다.
Action value를 상수로 만들어준다.
const PLUS_ONE = 'PLUS_ONE';
Action Creator를 만든다.
export const plusOne = () => {
return {
type: PLUS_ONE,
};
};
리듀서는 state와 action을 갖는다.
// 초기 상태값
const initialState = {
number: 0,
};
// 리듀서
const counter = (state = initialState, action) => {
switch (action.type) {
case PLUS_ONE: // case에서도 문자열이 아닌, 위에서 선언한 상수를 넣어줍니다.
return {
number: state.number + 1,
};
case MINUS_ONE: // case에서도 문자열이 아닌, 위에서 선언한 상수를 넣어줍니다.
return {
number: state.number - 1,
};
default:
return state;
}
};
(리듀서 생성 파일에서 불러온) reducer를 묶어준다. : 하나로 모아서 store에 모아주는 방식
const rootReducer = **combineReducers**({ counter });
만든 reducer를 통해 store를 생성한다.
const store = createStore(rootReducer);
생성한 store를 내보낸다.
export default store;
👉 export 와 export default
export
1. 복수의 개체가 있는 라이브러리 형태의 모듈에서 가져오기 할 때 사용된다.
2. 특정 개체만 가져오는게 가능하다.
3. 원하는 이름으로 import가 불가능하다.
export default
1. 일반적으로 해당 모듈엔 하나의 개체(변수, 클래스, 함수 등)만 있다는 의미로 받아들여진다.
2. 따라서 해당 모듈의 전체 개체를 export 한다는 의미를 갖는다.
3. 원하는 이름으로 import가 가능하다. (ex. import 원하는이름 from "경로")
<button onClick={() => {dispatch(plusOne()); }}>
+1
</button>