如何在react-natvie中重用组件时重新加载组件生命周期?

时间:2017-02-12 10:19:28

标签: reactjs react-native

假设应用程序左侧有菜单列表,每个菜单都在右侧重复使用相同的内容组件。(我使用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指示器不显示,它滚动到上面不看。

1 个答案:

答案 0 :(得分:0)

我看到的是你无法管理国家。首先,componentWillMount和componentDidMount将仅首次使用,直到您不将其从导航器堆栈(popRoute)中移出。在您的情况下,您不想弹出路由来管理状态,因此您可以使用其他生命周期组件,例如componentWillRecieveProps(),shouldComponentUpdate()等。我还有一个救援计划,forceUpdate()函数,将强制更新组件,但禁止使用它,除非没有其它方法。

干杯:)