假设应用程序左侧有一个菜单列表,每个菜单都重用右侧的相同内容组件。(我使用反应还原)
如果我单击菜单,菜单状态更新和内容组件将加载不同的数据并执行一些其他操作。但第一次加载后,内容组件不会执行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指示器不显示,它滚动到上面看不到。
我看到的是您无法管理状态。首先,componentWillMount和componentDidMount只能第一次工作,直到您没有将其从导航器堆栈(popRoute)中移出。在你的情况下,你不想弹出路由来管理状态,这样你就可以使用其他生命周期组件,如componentWillRecieveProps()、shouldComponentUpdate()等。我还有一个救援计划,forceUpdate()函数,它将强制更新组件,但除非没有其他方法,否则禁止使用它。
干杯:)