3
내 작업에서 일부 데이터를 내 구성 요소로로드해야하는 API를 요청하면서 요청을하고 있습니다. 나는 구성 요소가 마운트 할 때, 그 요구를 시작,하지만 난 그냥 돌아 유지하기 때문에 돌아 오는-약속이 제대로 작동하려면 얻이 수없는 것 : 내 개발 도구에서Redux Promise로 내 구성 요소에 대한 약속 된 약속을 얻으려면 어떻게해야합니까?
Promise {[[PromiseStatus]]: "pending", [[PromiseValue]]: undefined}
을 내가 CONSOLE.LOG하려고 할 때 내 componentWillMount 메소드 내부의 값.
스토어 & 라우터
import React from 'react';
import { render } from 'react-dom';
import { createStore, applyMiddleware } from 'redux';
import promiseMiddleware from 'redux-promise';
import { Provider } from 'react-redux';
import { Router, hashHistory } from 'react-router';
import routes from './routes';
import rootReducer from './reducers';
const store = createStore(
rootReducer,
applyMiddleware(promiseMiddleware)
);
render(
<Provider store={store}>
<Router history={hashHistory} routes={routes} />
</Provider>,
document.getElementById('root')
);
액션
import axios from 'axios';
export const FETCH_REVIEWS = 'FETCH_REVIEWS';
export const REQUEST_URL = 'http://www.example.com/api';
export function fetchReviews() {
const request = axios.get(REQUEST_URL);
return {
type: FETCH_REVIEWS,
payload: request
};
};
감속기 리뷰
,369 : 여기 아래 내 코드입니다import { FETCH_REVIEWS } from '../actions/reviewActions';
const INITIAL_STATE = {
all: []
};
export default function reviewsReducer(state = INITIAL_STATE, action) {
switch(action.type) {
case FETCH_REVIEWS:
return {
...state,
all: action.payload.data
}
default:
return state;
}
}
루트 감속기
import { combineReducers } from 'redux';
import reviewsReducer from './reviewsReducer';
const rootReducer = combineReducers({
reviews: reviewsReducer
});
export default rootReducer;
구성 요소
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { fetchReviews } from '../../actions/reviewActions';
class Home extends Component {
componentWillMount() {
console.log(this.props.fetchReviews());
}
render() {
return (
<div>List of Reviews will appear below:</div>
);
}
}
export default connect(null, { fetchReviews })(Home);
모든 모든 도움을 크게 감사합니다. 고맙습니다. 즉각적인 실행을 방지하기 위해 코드를 조금 변경 될 수 있도록
덕분에 - 그래이 도움이되었다. Console.logging 즉시, 당신이 지적한대로, 그것을 실행하자마자 실행, 따라서 보류중인 약속의 이유. 나는 이것을 게시 한 후 redux-logger를 설치했고 그것이 내 상점에 도착했을 때 약속이 해결되는 것을 볼 수있었습니다. – hidace