dispatch 등, 기본내용 추가
dispatch()로 수정요청할 때, 데이터를 보낼수도 있다.
dispatch( {type: ~ , payload: 전송할 데이터} )
보낸 자료는 액션 파라미터에 저장되어 있다.
// dispatch 전송 : id를 전송한다
<button onClick={
()=> { props.dispatch( {id:p.id, type:'수량증가'} ) }
}>+</button>
// reducer 관련
function reducer(state=초기값, 액션) {
if (액션.type ==='수량증가') {
let copy = [...state];
copy[액션.id].quan++;
return copy;
}
else if (액션.type === '수량감소') {
let copy = [...state];
if (copy[액션.id].quan > 0) {
copy[액션.id].quan--;
}
return copy;
}
else {
return state;
}
}
state를 꺼내쓰는 방법 중 하나 : useSelector
let state = useSelector( (state[redux에 있던 모든 state] ) => state);
dispatch 하는 방법 중 하나 : useDispatch
import { connect, useDispatch, useSelector } from "react-redux";
...
let dispatch = useDispatch();
...
<button onClick={
()=> { props.dispatch( {id:p.id, type:'수량감소'} ) }
}>-</button></td>
=>
()=> { dispatch( {id:p.id, type:'수량감소'} ) }
분기식
컴포넌트안에선 if/else
function Component() {
if (true) {
return <P>True</p>
} else {
return null;
}
}
jsx에선 삼항연산자
// 일반적으로 삼항 연산자 + 삼항연산자 중첩가능
function Component() {
return (
<div> {
1===1
? <p>True</p>
: (
2===2 ? <p>222</p> : <p>else</p>
)
}
</div>
)
}
&& 사용
{ 1===1 && <p>True</p>
switch & case
function reducer(state, 액션){
switch (액션.type) {
case '수량증가' :
return 수량증가된state;
case '수량감소' :
return 수량감소된state;
default :
return state
}
enum : 오브젝트 자료형이용해서
var 탭UI = {
info : <p>상품정보</p>,
shipping : <p>배송관련</p>,
refund : <p>환불약관</p>
}
function Component() {
var 현재상태 = 'info';
return (
<div>
{
탭UI[현재상태]
}
</div>
기본적으로 state변경함수들은 비동기 (asynchronous) 로 처리 된다
<아직도 자세히는 모르겠다만, 자주 보고 코딩하다보면 깨닫게 되겠지..>
'프로그래밍&IT > React & CSS' 카테고리의 다른 글
[CSS 기본] 선택자 (0) | 2021.11.16 |
---|---|
Coding Apple, React 강좌 내용 정리.19 - lazy loading / React devtools, memo (재렌더링 방지) (0) | 2021.11.15 |
Coding Apple, React 강좌 내용 정리.17 - 2.Redux (0) | 2021.11.08 |
Coding Apple, React 강좌 내용 정리.17 - Redux.1 (0) | 2021.11.04 |
Coding Apple, React 강좌 내용 정리.16 - Tab UI , animation (0) | 2021.11.03 |