我正在顯示來自我的狀態存儲的項目列表。我想用一個onClick按鈕來更新這個列表。我的列表顯示了一個地圖功能,起初它運行良好,但是我點擊了按鈕我有以下錯誤data.map is not a function
。當我運行我的組件而不顯示數據列表項時,一切正常,狀態更新正確。爲什麼我的地圖功能在更新的Redux狀態發生反應後不起作用
這裏是我的減速器用我的產品清單。
var all = [
{x: 'a', y: 20},
{x: 'b', y: 14},
{x: 'c', y: 12},
{x: 'd', y: 19},
{x: 'e', y: 18},
{x: 'f', y: 15},
{x: 'g', y: 10},
{x: 'h', y: 14}
];
var filtered = [
{x: 'a', y: 9},
{x: 'b', y: 5},
{x: 'c', y: 6},
{x: 'd', y: 12},
{x: 'e', y: 10},
];
const ChartData = (state = all, action) => {
switch (action.type) {
case 'DATA_CHART_ALL':
return { all: update(state.all, {$set: all})}
case 'DATA_CHART_FILTER':
return { all: update(state.filtered, {$set: filtered})}
default:
return state;
}
};
,這裏是我的組件:
function DisplayData ({ data, DataSetUpdate }) {
return (
<div>
<ul>
{ data.map((m, i) =>
<li key={i}>{m.x} - {m.y}</li>
)}
</ul>
<button onClick={DataSetUpdate}>dataSetupdate</button>
</div>
);
}
const mapStateToProps = (state) => {
return {
data: state.ChartData
};
};
const mapDispachToProps = (dispatch) => {
return {
DataSetUpdate:() => {dispatch (datachartFilter())},
};
};
我想有一些錯誤的,我的組成部分。我想我需要使用類似this.props某處,但我不知道在哪裏。我也嘗試用構造函數方法構建ES6組件class DisplayData extends React.Component
,但是我不知道如何傳遞我的DataSetUpdate函數。
這裏是JS斌https://jsbin.com/xocopal/edit?js,console,output
謝謝!
編輯#1:我的JS bin不起作用,因爲我不能使不可變的庫工作:https://cdnjs.com/libraries/immutable所以我的reducer中的更新方法是未定義的。
我們可以看到您發送數據和DataSetUpdate的組件/容器嗎?它應該是像 –
blackmind
嗡嗡聲......你的意思是? 'const AppChart = connect(mapStateToProps,mapDispachToProps)(DisplayData); 導出默認AppChart' ...不想分享我所有的代碼...我認爲它不是很有用......或者是? –
這是您唯一呼叫DisplayData的地方嗎? – blackmind