React-redux 사용해보기
2021. 12. 23. 14:58ㆍFront End
npm install react-redux
src 폴더에 store.js 생성 후 스토어 작업
//액션
export const increase = (username) => ({ type: 'INCREMENT', payload: username });
export const decrease = () => ({ type: 'DECREMENT' });
//상태
const initstate = {
num: 0,
username: '',
};
//액션의 결과를 걸러내는 과정
const reducer = (state = initstate, action) => {
switch (action.type) {
case 'INCREMENT':
return { num: state.num + 1, username: action.payload }; //return되면 그걸 호출한 쪽에서 받는게 아니라 return 되는 순간 ui 변경
case 'DECREMENT':
return { num: state.num - 1 };
default:
return state;
}
};
export default reducer;
이후 index.js에 입력
const store = createStoreHook(reducer);
ReactDOM.render(
<React.StrictMode>
<Provider store={store()}>
<App />
</Provider>
</React.StrictMode>,
document.getElementById('root'),
);
top.js
import React from 'react';
import '../App.css';
import { useSelector } from 'react-redux';
const Top = () => {
const { num, username } = useSelector((store) => store);
return (
<div className="subContainer">
<h1>Top</h1>
번호 : {num}
이름 : {username}
</div>
);
};
export default Top;
bottom.js
import React from 'react';
import '../App.css';
import { useDispatch } from 'react-redux';
import { decrease, increase } from '../store';
const Bottom = () => {
const dispatcher = useDispatch();
return (
<div className="subContainer">
<h1>Bottom</h1>
<button onClick={() => dispatcher(increase('cos'))}>증가</button>
<button onClick={() => dispatcher(decrease())}>감소</button>
</div>
);
};
export default Bottom;
app.js
import './App.css';
import Top from './components/Top';
import Bottom from './components/Bottom';
function App() {
return (
<div className="container">
<h1>최상단 화면</h1>
<Top />
<Bottom />
</div>
);
}
export default App;
'Front End' 카테고리의 다른 글
React 글쓰기, 글 목록 보기 실습 (0) | 2021.12.22 |
---|---|
react-router-dom 기본 사용 (0) | 2021.12.22 |
React 기본 문법, styled-component 사용 (0) | 2021.12.22 |
React 1일차. (0) | 2021.12.22 |
jQuery (0) | 2021.09.23 |