0
當我將狀態映射到特定組件的道具時,即使狀態已更改,單個道具似乎也不會更新。當我將整個狀態映射到組件時,我會得到我想要的行爲(因爲狀態已更改)。見下文。React-Redux:mapStateToProps不用個別屬性更新,但在映射整個狀態/商店時確實連接
const Dashboard = ({ state, justMarkets, justItems }) => {
console.log('state', state);
console.log('state markets', state.markets);
console.log('just markets', justMarkets);
console.log('state items', state.items);
console.log('justItems', justItems)
const markets = state.markets,
items = state.items;
return (
<div>
{
markets
.filter(market => market.hasItems)
.map(market => {
const {
marketname: name,
id,
Products,
Address,
GoogleLink
} = market;
return (
<div className="market" key={id}>
<div>
<h1>{name}</h1>
<h2>{Address}</h2>
<a href={GoogleLink} target="_blank">View in Google Maps</a>
</div>
<Items items={items} products={Products} />
</div>
);
})
}
</div>
);
};
const mapStateToProps = state => ({
state,
justMarkets: state.markets,
justItems: state.items
});
export default connect(mapStateToProps, null)(Dashboard);
如果你看到這個image,你會發現,當狀態更新時,我只能從組件內的state.markets
和state.items
訪問更新狀態。我似乎無法直接在mapStateToProps
中訪問它們(狀態更新後,justMarkets
和justItems
仍爲空陣列)。希望對此事有所瞭解!
看起來很奇怪。你有可能在別的地方不小心覆蓋道具嗎?我的意思是,如果你出於某種原因有類似於' '的代碼。 –
jonahe
我想通了!我忘記了這個簡單的檢查。在reducer中,我已經返回Object.assign(state,newPropObj)而不是Object.assign({},state,newPropObj),所以在技術上它就好像指向狀態對象的指針從未改變過。感謝您的幫助! – Jai
哦,我明白了。整蠱!很高興你發現了錯誤!我建議您將其發佈爲答案,並且(48小時後)接受您自己的答案,供將來的讀者閱讀。 https://stackoverflow.com/help/self-answer – jonahe