본문 바로가기
공부/리액트

redux

by 매일삼겹살 2021. 6. 15.
반응형

redux는 상태 관리 라이브러리다

Redux is a predictable state container for javascript apps

 

props 와 state

 

props는 properties의 줄임말

부모 컴포넌트가 있으면 자식 컴포넌트가 들어갈 수 있는데 그럴 때 props 를 이용한다

그리고 위에서 아래로 부모 컴포넌트에서 자식 컴포넌트로 이렇게만 보낼 수가 있다.

또 부모 컴포넌트에서 자식 컴포넌트에게 1이라는 데이터를 줬다고 하면

자식 컴포넌트에서는 1이라는 데이터를 바꿀 수 없다.

 

그래서 부모에서 변경한다음 다시 자식에게 보내야함

<chatMessages
	message={message}
    currentMember={member}
/>

 

state

부모 컴포넌트에서 자식 컴포넌트에게 데이터를 보내는 게 아니고

컴포넌트 안에서 데이터를 바꿀 수 있다.

데이터가 바뀔 때 재 렌더링 된다.

state = {
	message: '',
    attachFile: undenfined,
    openMenu: false,
}

 

redux는 state를 관리하는 것

 

redux의 데이터 flow(strict unidirectional data flow) 한방향으로만 흐른다 의미

react component -> dispactch(action) -> action -> reducer -> store -> subscribe -> react component

 

Action -> a plain object describing what happend. 어떤 일이 일어났는지 설명하는 객체

//action object
{type: 'Like_ARTICLE', articleId: 42}
{type: 'FETCH_USER_SUCCESS', response: {id: 3, name: 'Mary'}}
{type: 'ADD_TODO', text: 'Read the Redux docs.'}

articleId 42번을 좋아요를 했다  

아이디가 3이고 이름이 메리인 유저를 가져오는데 성공했다

'Read the Redux docs' 텍스트를 TODO에 추가했다.

 

Reducer -> 액션을 함으로 인해서 3이었던 state가 4로 변했다. 이런 것을 설명해주는 것이 Reducer

state의 변화를 설명(?)

이전 state와 action object를 받은 후에 next state를 return한다.

 

store은 어플리케이션의 state를 감싸주는 역할

 

redux 이용하기

다운로드

redux

react-redux

redux-promise

redux-thunk

npm install redux react-redux redux-promise redux-thunk --save

 

//client의 index.js
import { Provider } from 'react-redux';
import { applyMiddleware, createStore } from 'redux';
import promiseMiddlware from 'redux-promise';
import ReduxThunk from 'redux-thunk';

const createStoreWithMiddelware = applyMiddleware(promiseMiddlware, ReduxThunk)(createStore)


ReactDOM.render(
  <Provider store={createStoreWithMiddelware(Reducer,
    window._REDUX_DEVTOOLS_EXTENSION__ &&
    window._REDUX_DEVTOOLS_EXTENSION__()
  )}>
    <App />
  </Provider>,
  document.getElementById('root')
);


//reducer 파일의 index.js
import { combineReducers } from "redux";
//import user from './user_reducer';

const rootReducer = combineReducers({
    //user
})

export default rootReducer;

그냥 store는 promise와 function을 받을 수 없기 때문에 reduxthnuk와 promiseMiddlwar를 사용함

reducer들이 여러가지가 있을 수 있기 때문에 combineReducers 를 이용해 하나로 합쳐준다.

 

redux extension - redux devtool 이거를 이용해서 redux를 조금 편하게 사용할 수 있다 설치해야함

 

Redux DevTools

Redux DevTools for debugging application's state changes.

chrome.google.com

 

 

728x90

'공부 > 리액트' 카테고리의 다른 글

react hook  (0) 2021.06.15
ant design 이용  (0) 2021.06.15
Concurrently 이용  (0) 2021.06.15
데이터 Flow Axios Cors Proxy  (0) 2021.06.15
리액트 라우터 돔  (0) 2021.06.15

댓글