Redux
  • Read Me
  • 소개
    • 동기
    • Core Concepts
    • 3가지 원칙
    • 기존 기술들
    • Learning Resources
    • 생태계
    • 예시
  • 기초
    • 액션
    • 리듀서
    • 스토어
    • 데이터 흐름
    • React와 함께 사용하기
    • 예시: Todo List
  • 심화
    • 비동기 액션
    • 비동기 흐름
    • 미들웨어
    • React Router와 함께 사용하기
    • 예시: Reddit API
    • Next Steps
  • 레시피
    • Configuring Your Store
    • Redux로 마이그레이션
    • 객체 확산 연산자 사용하기
    • 보일러플레이트 줄이기
    • Server Rendering
    • Writing Tests
    • Computing Derived Data
    • Implementing Undo History
    • Isolating Subapps
    • 리듀서 구조화하기
      • 사전에 요구되는 개념들
      • 기본 리듀서 구조
      • 리듀서 로직 분리하기
      • 리듀서 예제 리팩토링하기
      • combineReducers 사용하기
      • combineReducers 더 알아보기
      • 상태 정규화하기
      • 정규화된 데이터 업데이트하기
      • 리듀서 로직 재사용하기
      • 불변 업데이트 패턴
      • 상태 초기화하기
    • Using Immutable.JS with Redux
  • FAQ
    • General
    • Reducers
    • Organizing State
    • Store Setup
    • Actions
    • Immutable Data
    • Code Structure
    • Performance
    • Design Decisions
    • React Redux
    • Miscellaneous
  • 문제해결
  • 용어사전
  • API 레퍼런스
    • createStore
    • Store
    • combineReducers
    • applyMiddleware
    • bindActionCreators
    • compose
  • 변경 기록
  • 후원자
  • 피드백
Powered by GitBook
On this page
  • 인수
  • 반환
  • 예시
  • 팁
  1. API 레퍼런스

createStore

PreviousAPI 레퍼런스NextStore

Last updated 6 years ago

앱의 상태 트리 전체를 보관하는 Redux 를 만듭니다. 앱 내에는 단 하나의 스토어만 있어야 합니다.

인수

  1. reducer (Function): 주어진 현재 상태 트리와 에서 다음 를 반환하는 입니다.

  2. [preloadedState] (any): 초기 상태입니다. 유니버설 앱의 서버나 이전의 직렬화된 사용자 세션에서 상태를 채우기 위해 선택적으로 지정할 수 있습니다. 만약 로 리듀서를 만들었다면, 이 인수는 전달했던 것과 같은 키 구조를 가지는 평범한 객체여야 합니다. 그렇지 않다면 리듀서가 이해할 수 있는 어떤 것도 사용할 수 있습니다.

  3. [enhancer] (Function): 스토어 인핸서입니다. 미들웨어나 시간여행, 영속성 등의 서드파티 기능을 스토어에 추가하기 위해 지정할 수 있습니다. Redux와 함께 제공되는 인핸서는 뿐입니다.

반환

(): 앱의 전체 상태를 가지고 있는 객체입니다. 이 객체의 상태를 바꾸는 유일한 방법은 것 뿐입니다. UI를 업데이트 하기 위해 상태를 할 수도 있습니다.

예시

import { createStore } from 'redux'

function todos(state = [], action) {
  switch (action.type) {
    case 'ADD_TODO':
      return state.concat([ action.text ])
    default:
      return state
  }
}

let store = createStore(todos, [ 'Use Redux' ])

store.dispatch({
  type: 'ADD_TODO',
  text: 'Read the docs'
})

console.log(store.getState())
// [ 'Use Redux', 'Read the docs' ]

팁

  • 서버에서 실행되는 유니버셜 앱을 위해서는 매 요청마다 별개의 스토어 인스턴스를 만드세요. 스토어 인스턴스에 데이터를 가져오는 액션을 보낸 다음 완료되면 서버에서 앱을 랜더링하면 됩니다.

  • 스토어가 생성되면, Redux는 최초의 상태를 가지는 스토어를 만들기 위해 더미 액션을 보냅니다. 이 액션을 직접 다뤄야 하는 것은 아닙니다. 단지 여러분의 리듀서가 undefined를 인수로 받았을 때 최초 상태를 반환해야 한다는 점만 기억해두면 됩니다.

앱에 하나 이외의 스토어를 만들지 마세요! 대신 여러개의 리듀서를 하나의 루트 리듀서로 만들기 위해 를 사용하세요.

상태의 형식은 당신이 결정하기 나름입니다. 평범한 객체를 사용하거나 같은 것을 사용할 수도 있습니다. 잘 모르겠다면, 평범한 객체로 시작하세요.

상태가 평범한 객체라면, 절대 변경하지 않도록 하세요! 예를 들어 리듀서에서 Object.assign(state, newData) 같은 것을 반환하는 대신 Object.assign({}, state, newData)를 반환하세요. 이를 통해 이전 상태를 덮어쓰지 않을 수 있습니다. 을 사용한다면 return { ...state, ...newData }처럼 쓸 수도 있습니다.

여러개의 스토어 인핸서를 적용하기 위해서는 를 사용해야 합니다.

combineReducers
Immutable
객체 확산 연산자 제안
compose()
스토어
combineReducers
applyMiddleware()
Store
액션
상태 트리
리듀싱 함수
액션을 보내는
구독