Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags more
Archives
Today
Total
관리 메뉴

개발의변화

대망의 리덕스! 본문

카테고리 없음

대망의 리덕스!

refindmySapporo 2021. 9. 29. 21:35
반응형

액션!

상태에 어떠한 변화가 필요 할 때 액션이라는 것을 발생 

하나의 객체로 액션을 형성하고 있다!

ex)

{

  type: "TOGGLE_VALUE"

}

무조건 객체 안에 type필드를 필수적으로 가지고 있어야 하고 그 외의 값들은 개발자 마음대로 넣을 수 있다.

 

ex)

{

type: "ADD_TODO",

data : {

  id: 0,

text: "리덕스 배우기"

}

}

 

액션 생성함수!!

액션 생성함수는 액션을 만드는 함수, 단순히 파라미터(액션)을 받아와서 액션 객체 형태로 만들어 줌

export const changeInput = text => ({type: "CHANGE_INPUT",

text

});

이러한 액션 생성함수를 만드는 이유는 나중에 컴포넌트에서 더욱 쉽게 액션을 발생시키 위해서

그래서 보통 함수 앞에 export 키워드를 이용해 다른 파일에서 불러옴

리덕스 사용 할 때 액션 생성함수를 사용하는 것은 필 수는 아니다. 액션을 발생 시킬 때마다 직접 액션 객체를 생성할 수 있다.

 

리듀서

변화를 일으키는 함수 , 리듀서는 두 개의 파라미터를 가지고 오는데 첫번째 파라미터에는 state 즉 현재의 상태를 받아오고

두 번째 파라미터에서는 전달받은 액션을 참고하여 새로운 상태 반환

useRedcuer를 사용할 때 작성하는 리듀서와 비슷한 형태

function counter(state, action) {

switch (action.type) {

case 'INCREASE': return state + 1;

case 'DECREASE': return state - 1;

default: return state; } }

 

스토어

리덕스에서는 한 애플리케이션당 하나의 스토어를 만들게 됨 , 스토어 안에는, 현재의 앱 상태와 리듀서와 추가적인 내장 함수가 들어감

 

초기화

const initialState = {

counter : 1

 

}

리듀서 함수의 state는 초기화를 해야하므로 initialState라는 변수에 액션 생수 함수들의 값들을 초기화 시킨다

 

스토어

 const stroe =createStore(reducer)

 

ducks패턴

파일에 모든 코드를 넣는 것

액션, 액션 생성 함수, reducer 생성

 

import { combineReducers } from "redux";

import counter from "./redux/Counter";

import todos from "./redux/ADD_TODO";

 

const rootReducer = combineReducers({

counter,

todos

})

 

export default rootReducer;

 

 

import React from 'react';

import ReactDOM from 'react-dom';

import './index.css';

import App from './App';

import reportWebVitals from './reportWebVitals';

import {Provider} from 'react-redux';

import {createStore} from 'redux';

import rootReducer from './modules';

 

cnst store = createStore(rootReducer);

ReactDOM.render(

<Provider store={store}>

<App />

</Provider>,

document.getElementById('root')

);

index.js

 

리덕스 개발자 도구

npm add redux-devtools-extension

 

 

 

 

 

 

반응형