2016-09-21 4 views
1

저는 Redux와 그 개념, 특히 미들웨어에 새로운 것이므로 어떤 어리석은 오류에 대해서 사과드립니다.redux-promise로 '디스패치'가 정의되지 않음

이 프로젝트에서는 redux-thunk를 사용해야합니다. 몇 가지 가이드와 적용 방법에 대한 설명을 살펴 보았습니다. 그런 다음 계속 오류가 발생했습니다. "Uncaught TypeError : undefined의 'dispatch'속성을 읽을 수 없습니다. 나는 개발자 도구를 열고이 오류를 표시있어 : 바로 아무것도하고 경우

enter image description here

나는 아무 생각이 없습니다. 아래는 나의 액션 크리에이터 및 상점 코드입니다.

행동 /하는 index.js

import axios from 'axios'; 

export function fetchLessons() { 
    console.log('called!'); 
    return function(dispatch) { 
    axios.get(`${ROOT_URL}/lessons`) 
     .then((response) => { 
     dispatch(fetchLessonsSuccess(response)) 
     }) 
     .catch((err) => { 
     dispatch(fetchLessonsError(err)) 
     }) 
    } 
} 

function fetchLessonsError(){ 
    return "An error has occured"; 
} 

function fetchLessonsSuccess(response) { 
    return { 
    type: FETCH_LESSONS, 
    payload: request 
    }; 
} 

하는 index.js (상점)

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import { Provider } from 'react-redux'; 
import { createStore, applyMiddleware, compose } from 'redux'; 
import { Router, browserHistory } from 'react-router'; 
import rootReducer from './reducers/index'; 
import routes from './routes'; 
import promise from 'redux-promise'; 
import thunk from 'redux-thunk'; 

const middleware = applyMiddleware(promise(), thunk); 
const store = createStore(rootReducer, compose(middleware)); 

ReactDOM.render(
    <Provider store={store}> 
    <Router history={browserHistory} routes={routes} /> 
    </Provider> 
    , document.querySelector('.container')); 

답변

3

나는 applyMiddleware()에 전화가 약간 꺼져 생각합니다. 가져온 약속 미들웨어를 직접 전달하고 싶지는 않습니다 : applyMiddleware(promise, thunk).

이 기능은 기본적으로 공장입니다. Redux는이를 호출하고 매장의 dispatch 기능을 전달할 수 있습니다.이 기능을 통해 미들웨어는 작업이 준비 될 때마다 작업을 발송할 수 있습니다.

0

나는 완전히 확실하지만,이

export function fetchLessons() { 
    console.log('called!'); 
    return function(dispatch) { 
    return dispatch({ 
     type: 'FETCH_LESSONS', 
     payload: axios.get(`${ROOT_URL}/lessons`) 
     .then((response) => { 
      dispatch(fetchLessonsSuccess(response)) 
     }) 
     .catch((err) => { 
      dispatch(fetchLessonsError(err)) 
     }); 
    }); 
    }; 
} 

function fetchLessonsError(){ 
    return "An error has occured"; 
} 

function fetchLessonsSuccess(response) { 
    return { 
    type: 'FETCH_LESSONS_FULFILLED', 
    payload: response 
    }; 
} 
같은 것을하지