假设应用程序左侧有菜单列表,每个菜单都在右侧重复使用相同的内容组件。(我使用react-redux)
如果单击菜单,菜单状态更新和内容组件将加载不同的数据并执行其他操作。但是在第一次加载后,内容组件将不执行componentWillMount,componentDidMount,它只有componentWillReceiveProps ...等。处理类似的状态很复杂。我希望每次都重新加载该组件,以便我可以处理componentDidMount中的状态。它是关于类和实例吗?我希望得到一些好的建议。
我已解决了之前的问题,但是有一个关于ScrollView或ListView的RefreshControl的错误。接下来是内容组件的代码:
<View style={{flex: 1}}>
<ListView
<RefreshControl
refreshing = {tableFetching || refreshTable}
onRefresh = {this._onRefresh}
tintColor = "gray"
title = "loading..." />
enableEmptySections = {true}
dataSource={ds.cloneWithRows(tableData)}
renderRow={this.renderRow}
style={{flex: 1}} />
</View>
首先加载组件时,RefreshControl会正常显示。但是当我更改菜单,组件更新并加载新数据时,RefreshControl指示器不显示,它滚动到上面不看。
答案 0 :(得分:0)
我看到的是你无法管理国家。首先,componentWillMount和componentDidMount将仅首次使用,直到您不将其从导航器堆栈(popRoute)中移出。在您的情况下,您不想弹出路由来管理状态,因此您可以使用其他生命周期组件,例如componentWillRecieveProps(),shouldComponentUpdate()等。我还有一个救援计划,forceUpdate()函数,将强制更新组件,但禁止使用它,除非没有其它方法。
干杯:)