>웹 프론트엔드 >JS 튜토리얼 >redux-thunk 실제 프로젝트 사례에 대한 자세한 설명

redux-thunk 실제 프로젝트 사례에 대한 자세한 설명

php中世界最好的语言
php中世界最好的语言원래의
2018-06-07 14:55:282287검색

이번에는 redux-thunk 실무 프로젝트 사례에 대해 자세히 설명하겠습니다. redux-thunk 실무 프로젝트 사용 시 주의사항은 무엇인가요?

redux의 핵심 개념은 실제로 매우 간단합니다. 수정해야 하는 상태를 저장소에 저장하고, 발생한 일을 설명하는 작업을 시작하고, 리듀서를 사용하여 작업이 상태 트리를 어떻게 변경하는지 설명합니다. 스토어를 생성할 때 리듀서를 전달해야 합니다. 스토어의 데이터를 실제로 변경할 수 있는 것은 store.dispatch API입니다.

1. 개념

액션을 발송한 후 리듀서에 도달하기 전에 몇 가지 추가 작업을 수행하려면 미들웨어를 사용해야 합니다. 로깅, 충돌 보고서 생성, 비동기 인터페이스 호출 또는 라우팅 등에 Redux 미들웨어를 사용할 수 있습니다.
즉, 미들웨어는 store.dispatch()를 확장한 것입니다

2. 미들웨어 사용법

import { applyMiddleware, createStore } from 'redux';
import thunk from 'redux-thunk';
const store = createStore(
  reducers, 
  applyMiddleware(thunk)
);

썽크 미들웨어를 직접 도입해서 applyMiddleware 메소드에 넣고, createStore 메소드를 전달하면 끝입니다. store.dispatch()에. 즉, 리듀서에서 일부 비동기 작업을 수행할 수 있습니다.

3.applyMiddleware()

사실 applyMiddleware는 Redux의 기본 메소드로, 모든 미들웨어를 배열로 결합하여 순차적으로 실행합니다.

더 많은 미들웨어가 있다면 하나씩 매개변수로 전달할 수 있습니다

const store = createStore(
  reducers, 
  applyMiddleware(thunk, logger)
);

미들웨어의 진화 과정을 이해하고 싶다면 redux 공식 문서: https://redux.js.org/advanced를 방문하세요. /middleware

4.redux-thunk

redux-thunk 소스 코드 분석 node_modules/redux-thunk/src/index.js

function createThunkMiddleware(extraArgument) {
 return ({ dispatch, getState }) => next => action => {
  if (typeof action === 'function') {
   return action(dispatch, getState, extraArgument);
  }
  return next(action);
 };
}
const thunk = createThunkMiddleware();
thunk.withExtraArgument = createThunkMiddleware;
export default thunk;

redux-thunk 미들웨어 내보내기 기본값은 createThunkMiddleware()에 의해 전달된 썽크입니다. createThunkMiddleware 함수를 살펴보면 Ke 함수를 반환합니다. 우리가 ES5로 번역한 코드가 더 읽기 쉽습니다.

function createThunkMiddleware(extraArgument) {
  return function({ dispatch, getState }) {
    return function(next){
      return function(action){
        if (typeof action === 'function') {
          return action(dispatch, getState, extraArgument);
        }
        return next(action);
      };
    }
  }
}

보고 나면 redux-thunk의 가장 중요한 아이디어는 함수를 반환하는 액션 생성자를 받아들일 수 있다는 점을 알 수 있습니다. 액션 생성자가 함수를 반환하면 실행합니다. 그렇지 않으면 원래 next(액션)에 따라 실행합니다.

이 액션 생성자는 함수를 반환할 수 있으므로 이 함수에서 일부 비동기 작업을 수행할 수 있습니다.

예:

export function addCount() {
  return {type: ADD_COUNT}
}
export function addCountAsync() {
  return dispatch => {
    setTimeout( () => {
      dispatch(addCount())
    },2000)
  }
}

addCountAsync 함수는 함수를 반환하고 디스패치를 ​​함수의 첫 번째 매개 변수로 전달하고 함수 내에서 비동기 작업을 수행합니다.

이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 자료:

JS를 사용하여 지난 7일과 지난 3일의 날짜를 가져오는 방법

프로젝트에서 Angular ng-animate 및 ng-cookies를 사용하는 방법

위 내용은 redux-thunk 실제 프로젝트 사례에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.