私のアプリはuser
オブジェクトを持っている場合と持たない場合があります。Redux:親の前に小道具を受け取っている子
が、私は二つの容器と二つの成分を持っている:
ParentContainer:
const mapStateToProps = (state) => ({
showUserDetails: Boolean(state.user),
})
export default connect(mapStateToProps)(ParentComponent)
のparentComponent:
const ParentComponent = ({ showUserDetails }) => (
<div>
{showUserDetails && <ChildContainer />}
</div>
)
ChildContainer:
const mapStateToProps = (state) => ({
name: state.user.name,
})
export default connect(mapStateToProps)(ChildComponent)
ChildComponent:
const ChildComponent = ({ name }) => (
<h1>{name}></h1>
)
、
state.user = null
を設定アクションの後、
ChildContainer
ParentContainer
前にレンダリングしようとしたので、それが
null.name
にアクセスすることはできませんとして例外をスローどこ私はシナリオに実行していますが。
Reduxの期待された動作で、子コンテナが親の前に再レンダリングできるかどうか。古典的なリアクションフローでは、このエラーは起こりません。
コンテナを使用する代わりにをParentComponent
に呼び出すことができます。しかし現実の世界では、コンポーネントを深く入れ子にして、さまざまな国のさまざまな部分にアクセスしているので、簡単に小道具を渡すことはできません。
これは働いていました、ありがとう。バッチ更新について知る良い場所と、なぜこの問題を解決したのですか? –
@BenSmith要するに、バッチ処理では、同じjsティック中に複数のsetStateを呼び出すと、Reactで1つのレンダリングしか生成されません。なぜそれが問題チェックアウトを引き起こすのかについては、オリジナルのGithubの問題https://github.com/reactjs/react-redux/issues/86あなたがここにいるのとまったく同じことが起こっています。 – Epeli