위의 포맷으로 정리를 해보았다.
💡 흐름 : components -> modules(action 생성) -> containers (dispatch, reducer, state 값 변경) -> components (UI)
index.js 에서 reducers 임포트 경로 수정하기
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reducers from './modules/bpp'
import reportWebVitals from './reportWebVitals';
import { Provider } from 'react-redux'
import { createStore } from 'redux'
const store = createStore(reducers)
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root')
);
reportWebVitals();
App.js
import React, { Component } from 'react';
import ConnectBpp from './containers/BppContainer'
class App extends Component {
render() {
return (
<div>
<ConnectBpp />
</div>
);
}
}
export default App
BppContainer 임포트해서 ConnectBpp 연결하기
components/Bpp.js
import React, { Component } from 'react';
class Bpp extends Component {
render() {
return (
<div>
<h1>Redux 테스트</h1>
<h1>{this.props.result}</h1>
<button onClick={this.props.onINC}>더하기</button>
<button onClick={this.props.onDEC}>빼기</button>
</div>
);
}
}
export default Bpp
modules/bpp.js
import { createAction, handleActions } from 'redux-actions';
const INC = 'INC'
const DEC = 'DEC'
export const inc = createAction(INC);
export const dec = createAction(DEC);
const initState = {
num: 100
}
export default handleActions({
[INC]: (state, action) => ({ num: state.num + 1 }),
[DEC]: (state, action) => ({ num: state.num - 1 })
}, initState);
export 를 붙여서 inc 와 dec 를 밖에서 사용할 수 있도록 만들고, handleActions 앞에도 export 를 붙여서 밖에서 사용할 수 있도록 만든다.
container/BppContainer.js
import { useDispatch, useSelector } from 'react-redux';
import Bpp from '../components/Bpp'
import { inc, dec } from '../modules/bpp'
const BppContainer = () => {
const num = useSelector(state => state.num)
const dispatch = useDispatch()
return (
<Bpp result={num}
onINC={() => dispatch(inc())}
onDEC={() => dispatch(dec())}
/>
)
}
export default BppContainer
import 할 때 경로 주의하기
'JavaScript > React' 카테고리의 다른 글
[React] 컴포넌트 알아보기 (0) | 2021.10.26 |
---|---|
[React] 글쓰기 기능 구현하기 (0) | 2021.10.22 |
[React] Redux 란? (0) | 2021.10.21 |
[React] React 이벤트 사용하기 (0) | 2021.10.20 |
[React] React 에서 bootstrap 사용하기(ReactStrap) (0) | 2021.10.20 |
댓글