0
我遵循YouTube上的教程之一。當我這樣做的時候,它工作得很好。但是,當我嘗試不同的api時,我得到一個錯誤項目沒有定義。有人能幫助我理解我做錯了什麼嗎?react-redux如何呈現API響應數據
由於
//動作
import axios from 'axios'
export function fetchTweets(brandUrl, responseCode){
let url = brandUrl + '/api/offer/' + responseCode;
return function(dispatch){
axios.get(url)
.then((response) => {
dispatch({
type: 'FETCH_TWEETS_FULFILLED',
payload: response.data
})
})
.catch((error) => {
dispatch({
type: 'FETCH_TWEETS_REJECTED',
payload: error
})
})
}
}
//減速器
export default function reducer(state = {
tweets: [],
fetching: false,
fetched: false,
error: null
}, action) {
switch(action.type){
case 'FETCH_TWEETS_PENDING' :{
return { ...state, fetching: true }
}
case 'FETCH_TWEETS_REJECTED' : {
return { ...state, fetching: false, error: action.payload }
}
case 'FETCH_TWEETS_FULFILLED' : {
return { ...state,
fetching: false,
fetched: true,
tweets: action.payload }
}
}
return state
}
//主成分
import React from 'react'
import { connect } from 'react-redux'
import { fetchTweets } from '../actions/tweetsActions'
class Layout extends React.Component{
fetchTweets(){
this.props.dispatch(fetchTweets(brandUrl, responseCode))
}
render(){
const { tweets } = this.props;
if(!tweets.length){
return <button value="Load" onClick={this.fetchTweets.bind(this)}>Load </button>
}
console.log(tweets.response.mainItems.length)
return (
<div>
<p>{tweets.statusMessage}</p>
<ul>
</ul>
</div>
);
}
}
function mapStateToProp(state){
return {
tweets : state.tweets.tweets
}
}
export default connect(mapStateToProp)(Layout)
//商店
import { applyMiddleware, createStore } from 'redux'
import thunk from 'redux-thunk'
import promise from 'redux-promise-middleware'
import logger from 'redux-logger'
import reducer from './reducers'
const middleware = applyMiddleware(promise(), thunk, logger())
export default createStore(reducer, middleware)
// API中的主要成分的mapStateToProps功能,爲什麼你被分配state.tweets.tweets訪問微博,雖然你沒有減速命名鳴叫,並沒有使用響應
您是否嘗試逐步調試? 1.檢查行動「有效載荷」中的數據。 2.在減速機處理完動作後檢查商店的數據。 3.檢查組件中道具的值。 似乎你在主要組件中有一些差異。你正在爲tweets調用'tweets.response.mainItems',但你可以爲狀態消息調用'tweets.statusMessage'。這似乎有點偏離。也許你應該只調用'tweets.mainItems'呢? – VanDanic
你好@VanDanic我做了調試,一切都很好。它確實打印statusMessage。 StatusMessage和響應位於同一級別,mainItems是響應的子級。當我從響應中選擇任何子屬性時,它會引發錯誤。 [調試圖像鏈接](http://imgur.com/z0Flmfb) – Mesmerize86