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

相关问题