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