特定のコンポーネントの状態をpropsにマップすると、状態が変更されても個々のプロンプトは更新されないようです。状態をコンポーネントにマップすると、(状態が変更されたため)必要な動作が得られます。下記参照。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
私はそれを理解しました!私はその浅い小切手を忘れてしまった。減速機ではObject.assign({}、state、newPropObj)の代わりにObject.assign(state、newPropObj)を返していたので、技術的には状態オブジェクトへのポインタが変更されていなかったかのようでした。ご協力ありがとうございました! – Jai
ああ、そうだ。トリッキー!あなたがそのバグを見つけたというニース!私はあなたが答えとして投稿し、(48時間後に)将来の読者のためにあなた自身の答えを受け入れることをお勧めします。 https://stackoverflow.com/help/self-answer – jonahe