Redux-React 예제
다음은 react 및 Redux 애플리케이션의 작은 예입니다. 작은 앱을 개발해 볼 수도 있습니다. 증가 또는 감소 카운터에 대한 샘플 코드는 다음과 같습니다.
이것은 저장소 생성 및 반응 앱 구성 요소 렌더링을 담당하는 루트 파일입니다.
/src/index.js
import React from 'react'
import { render } from 'react-dom'
import { Provider } from 'react-redux'
import { createStore } from 'redux';
import reducer from '../src/reducer/index'
import App from '../src/App'
import './index.css';
const store = createStore(
reducer,
window.__REDUX_DEVTOOLS_EXTENSION__ &&
window.__REDUX_DEVTOOLS_EXTENSION__()
)
render(
<Provider store = {store}>
<App />
</Provider>, document.getElementById('root')
)
이것이 반응의 근본 구성 요소입니다. 카운터 컨테이너 구성 요소를 자식으로 렌더링하는 역할을합니다.
/src/app.js
import React, { Component } from 'react';
import './App.css';
import Counter from '../src/container/appContainer';
class App extends Component {
render() {
return (
<div className = "App">
<header className = "App-header">
<Counter/>
</header>
</div>
);
}
}
export default App;
다음은 Redux의 상태를 반응 구성 요소에 제공하는 컨테이너 구성 요소입니다.
/container/counterContainer.js
import { connect } from 'react-redux'
import Counter from '../component/counter'
import { increment, decrement, reset } from '../actions';
const mapStateToProps = (state) => {
return {
counter: state
};
};
const mapDispatchToProps = (dispatch) => {
return {
increment: () => dispatch(increment()),
decrement: () => dispatch(decrement()),
reset: () => dispatch(reset())
};
};
export default connect(mapStateToProps, mapDispatchToProps)(Counter);
아래에 뷰 부분을 담당하는 반응 구성 요소가 있습니다.
/component/counter.js
import React, { Component } from 'react';
class Counter extends Component {
render() {
const {counter,increment,decrement,reset} = this.props;
return (
<div className = "App">
<div>{counter}</div>
<div>
<button onClick = {increment}>INCREMENT BY 1</button>
</div>
<div>
<button onClick = {decrement}>DECREMENT BY 1</button>
</div>
<button onClick = {reset}>RESET</button>
</div>
);
}
}
export default Counter;
다음은 액션 생성을 담당하는 액션 제작자입니다.
/actions/index.js
export function increment() {
return {
type: 'INCREMENT'
}
}
export function decrement() {
return {
type: 'DECREMENT'
}
}
export function reset() {
return { type: 'RESET' }
}
아래에는 Redux에서 상태를 업데이트하는 감속기 파일에 대한 코드 줄이 나와 있습니다.
reducer/index.js
const reducer = (state = 0, action) => {
switch (action.type) {
case 'INCREMENT': return state + 1
case 'DECREMENT': return state - 1
case 'RESET' : return 0 default: return state
}
}
export default reducer;
처음에 앱은 다음과 같이 보입니다.
증분을 두 번 클릭하면 출력 화면은 다음과 같습니다.
한 번 감소하면 다음 화면이 표시됩니다.
그리고 리셋하면 앱이 카운터 값 0 인 초기 상태로 돌아갑니다. 이것은 다음과 같습니다.
첫 번째 증분 작업이 발생할 때 Redux 개발 도구에서 어떤 일이 발생하는지 이해하겠습니다.
앱 상태는 증가 작업 만 전달되고 나머지 작업은 건너 뛰는 시간으로 이동됩니다.
우리는 혼자서 과제로 작은 Todo 앱을 개발하고 Redux 도구를 더 잘 이해하도록 권장합니다.