2016-11-21 92 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

function select(state) { 
    const { data } = state.modules; 

    return { 
    data: data 
    }; 
} 

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

據我瞭解,在訴訟被分派和Container組件接收更新的存儲數據,重新呈現應該發生。

這是奇怪的,componentDidUpdate,根據文檔,被稱爲組件接收更新道具和重新渲染。

但我的Foo(愚蠢)組件從來沒有出現,即使一切都成功派遣沒有狀態突變。

可能是什麼原因?謝謝!

+0

你可以分享你的代碼中你實現'mapStateToProps'和連接'組件與redux存儲的部分嗎? – Timo

+0

@Timo更新了問題 – knitevision

+0

也許this.props.data始終是false?你能發佈更完整的代碼嗎? –

回答

0

組件不重新呈現的最常見原因之一是您修改狀態而不是返回應用更改的狀態副本。

這是在Redux文檔的Troubleshooting部分中提到的。

+0

謝謝,我在去這裏之前做了大量的谷歌搜索,已經閱讀過這篇文章,我的狀態沒有發生變化 – knitevision

+0

@knitevision好的,只是一個猜測:)很高興聽到你問了很多谷歌之前,很多人都沒有「T。 – kjonsson

相關問題