#1 Today I Learned - 21.01.04
Today I Learned 📝
- react-redux: 연결하기
- styled-components: props로 style 제어
- es6: arrow function 구분하기
react-redux : 연결하기
action
action 생성자를 호출했을때 type이 담긴 객체{}를 반환해준다.
reducer
- 인자 값으로 initValue와 action을 받는다.
- reducer에서는 switch문으로 현재 받은 action.type 값을 받아 비교하여 값에 맞는 action을 return 해 준다.
- return 할 때에는 기존 state를 spread 연산자를 이용해 풀어서 넣고 업데이트 할 payload 값을 뒤에 넣어준다.
- 만약 해당하는 action.type이 있으면 기존 state에 추가할 값을 얹어서 return 하면 된다. 없다면 default값으로 기존 state값을 return 해주면 된다.
store 적용하기
import {reducer as appReducer} from "./app/redux";
reducer를 결합하는 과정에서 기존 reducer 이름으로 사용하게 되면 다른 reducer와 겹칠 수 있는데 이를 해결할 수 있는 방법은 as를 사용하는 것이다.
as를 사용하면 기존 export하던 이름을 변경하여 가져올 수 있다.
- reducer가 여러 개인 경우 combineReducers 를 사용하여 하나로 결합한다.
- 결합한 reducer를 최종적으로 createStore로 생성 시켜준다.
- 생성한 store를 export하고 index.js에 불러와 provider로 <App / >을 감싸준 후 props 값으로 store를 필수로 넘겨주어야한다.
- 최종적으로 안에서 redux로 state를 관리할 수 있다.
dispatch
action 전송하기
dispatch는 store에 있는 state 값을 변경하고자 할 때 사용한다.
useDispatch 라는 hooks을 사용하여 dispatch를 선언해준다.
const dispatch = useDispatch();
- dispatch()의 인자로는 type이 담긴 action을 넣어주어야한다. (action 생성자는 type이 담긴 plain object를 반환한다.)
- dispatch로 인자에 원하는 값을 넘길 수 있다.
- dispatch는 받은 인자를 reducer로 전송한다. 그러면 reducer는 현재 state와 받은 action을 콜백으로 가지고 있게된다.
- 받은 action이 어떤 type인지 확인해준 후 거기에 맞는 state를 update 된다.
useSelector
state를 꺼내서 사용하기
useSelector를 이용하여 어디서나 쉽게 꺼낼 수 있다.
const app = useSelector(state => state.app);
//화살표 함수에서 바로 리턴한것
const app 으로 선언하여 사용하면 app.openSidebar처럼 사용할 수 있으며
const { openSidebar } = useSelector(state => state.app);
chaining 하지 않고 바로 쓰고 싶다면 객체 분해 할당으로 바로 분해해서 사용 가능하다.
styled-components: props로 style 제어
styled-components에서 props 여부로 스타일을 다르게 줄 수 있다.
<Container openSidebar={openSidebar}>
</Container>
먼저 제어할 컴포넌트에 props를 넣어준다.
const Container = styled.div`
transform: ${props => props.openSidebar ?
"none" : "translateX(-100%)"};
`
style을 적용하는 곳에 props를 가져와서 삼항연산자로 대입한다.
es6 문법인 백틱(``) 기호 안에 있기 때문에 중괄호 표현법 ${ }을 사용하여 자바스크립트 언어를 사용할 수 있다.
es6: arrow function 구분하기
- () => (({})) 객체 리턴
- () => ({}) 객체 {} 를 리턴
- () => {} 함수 내부 (block)
- () => 1 즉시 리턴
() => {
dispatch()
}
dispatch는 return으로 값을 반환하지 않고 단순히 실행하는 구문이기에 ({}) 리턴하는 소괄호가 필요하지 않다.
review 📃
첫 til이다 📒
공부하면서 메모했던 것을 다시 옮겨 적는 데에만 두시간이 걸렸다..ㅠㅠ
이해 하는 것과 그걸 정리하는 것은 정말 어마어마한 차이가 나는 것 같다.
하지만 부족한 내용을 다듬고 글로 표현하면서 한번 더 이해 할 수 있고, 다음에 꺼내어 읽기에 편하게 정리해놓으니 좋았다.
앞으로 작성하면서 잘 정리해놓은 좋은 기록물들이 될 수 있었으면 좋겠다.
Author And Source
이 문제에 관하여(#1 Today I Learned - 21.01.04), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ye-r1/1-Today-I-Learned-21.01.04저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)