2016-11-21 4 views
2

Rest API、Container、およびPresentationalコンポーネントからデータを読み込んでいます。Redux&React:componentDidUpdateが呼び出されましたが、再レンダリングは行われません。

コンテナ

componentWillMount() { 
    this.props.load(); 
    } 

componentDidUpdate() { 
    console.log('updated'); 
} 

render() { 
    let view; 

    view = this.props.data ? (<Foo data={this.props.data} />) : (<H2>Loading</H2>) 

    return (
    <div> 
     {view} 
    </div> 
) 
} 

load - データをフェッチし、成功の負荷に減速してイベントを送出しました。

@Connect

私の知る限り理解し、アクションがディスパッチと Containerコンポーネントがストアから更新されたデータを受信した場合には、再レンダリングが起こるはず
function select(state) { 
    const { data } = state.modules; 

    return { 
    data: data 
    }; 
} 

export default connect(select, { 
    load: actions.data.load 
})(ContainerComponent); 

。コンポーネントが更新小道具を受け、再レンダリング時に奇妙である

componentDidUpdateは、ドキュメントによると、呼ばれています。

しかし、私のFoo(ダム)コンポーネントは、すべてが正常な状態変異なしに派遣されていても現れることはありません。

原因は何でしょうか?ありがとう!

+0

'mapStateToProps'を実装するコードの部分とreduxストアとコンポーネントを' connect'する部分を共有できますか? – Timo

+0

@Timo updated question – knitevision

+0

おそらくthis.props.dataは常にfalseですか?より完全なコードを投稿できますか? –

答えて

0

再レンダリングしないコンポーネントの最も一般的な理由の1つは、変更を適用して状態のコピーを返す代わりに状態を変更することです。

これは、ReduxドキュメントのTroubleshootingに記載されています。

+0

ありがとう、私はここに行く前にたくさんのグーグルで行った、この記事をすでに読んで、私の状態は突然変異していない – knitevision

+0

@knitevision大丈夫、ちょっと推測:)聞く前にたくさんのグーグルであることを聞いて、 't。 – kjonsson

関連する問題