【发布时间】:2016-11-21 15:16:16
【问题描述】:
我正在从 Rest API 加载数据,Container 和 Presentational 组件接受它。
容器
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 - 成功加载时在 reducer 中获取数据和调度事件。
@Connect
function select(state) {
const { data } = state.modules;
return {
data: data
};
}
export default connect(select, {
load: actions.data.load
})(ContainerComponent);
据我了解,当调度操作并且Container 组件从存储接收更新数据时,应该会发生重新渲染。
这很奇怪,根据文档,componentDidUpdate 在组件接收到更新的道具并重新渲染时被调用。
但是我的Foo(哑)组件永远不会出现,即使一切都在没有状态突变的情况下成功调度。
可能是什么原因?谢谢!
【问题讨论】:
-
您能否将实现
mapStateToProps和connect组件的代码部分与redux 存储共享? -
@Timo 更新问题
-
也许 this.props.data 总是假的?你能发布更完整的代码吗?
-
你能多展示一些代码吗?这里看起来一切正常,但我想看看连接如何与容器组件一起使用更多 IE 你是如何导出它的
-
只有在
connect传入的 props 发生变化时,您的组件才会重新渲染。您可以发布您的减速器代码,因为它看起来没有更新状态吗?