再次,我面臨着一個非常常見的錯誤"Cannot read property 'map' of undefined"
。我有一個在<ul><li></li></ul>
內正確加載項目(電影)的初始列表。但是,通過點擊我的按鈕發送我的操作後,發生錯誤。我實際上可以在我的redux開發工具中看到更新的狀態(即使出現錯誤),但我也可以看到,更改不會影響我的反應開發工具中的商店狀態。我該如何處理「無法讀取屬性'地圖'的未定義」react/redux
因此,這裏是我的減速器:
export default function moviesReducer(state = {items}, action) {
if(action.type === 'SET_MOVIES_FILTER') {
return update(state.items, {$splice: [[1,3]]})
}
return state;
}
這裏是我的項目名單(從這裏post):
let items = [{
title: 'Mad max',
year: 2015,
rating: 8,
genre: 'fantasy',
}, {
title: 'Spider man 2',
year: 2014,
rating: 7,
genre: 'fantasy',
}, {
title: 'Iron man 3',
year: 2013,
rating: 7,
genre: 'fantasy',
}, {
title: 'Dumb and Dumber To',
year: 2014,
rating: 5,
genre: 'comedy',
}, {
title: 'Ted 2',
year: 2015,
rating: 6,
genre: 'comedy',
}];
這裏是我的行動:
export const SetMoviesFilter =() => {
return {
type: 'SET_MOVIES_FILTER'
};
};
這裏是我的組件:
const movieTable = ({testmovie, movieTable }) => {
return (
<div>
<button onClick={movieTable}>testbutton</button>
<ul>
{testmovie.map((m, i) =>
<li key={i}>{m.year} - {m.title}.({m.genre}) - {m.rating}</li>
)}
</ul>
</div>)
}
function mapStateToProps(state) {
return {
testmovie: state.moviesReducer.items
};
};
const mapDispachToProps = (dispatch) => {
return {
movieTable:() => {dispatch (SetMoviesFilter());
},
};
};
const AppMovie = connect(mapStateToProps, mapDispachToProps)(movieTable);
我在哪裏錯了?我該怎麼辦 ?我不知道它是否有關,但我不能讓我的jsbin工作。
謝謝。
testmovie未定義。你可以在你的代碼中加入一個調試器,然後打開chrome dev工具來檢查它。首先在你的movieTable函數中添加'debugger;',當你在chrome中打開開發工具時,它會在該行暫停。 –
哼哼......我不明白。我沒有任何testmovie錯誤undefined。事實上,我可以看到與地圖功能'
\t \t \t {testmovie.map((M,I)=>- {m.year}顯示電影列表 - {m.title}({m.genre }) - {m。評分}
)} \t \t \t
'我點擊按鈕時只有'未定義的錯誤'地圖'。 –這是您的代碼中使用地圖的唯一地方。錯誤可能是來自redux或反應?您可以查看控制檯中的堆棧跟蹤,以瞭解錯誤發生的位置以及導致錯誤的原因。您可以通過在控制檯中單擊來擴展錯誤並查看堆棧跟蹤。 –