ReactNative-在react-native-tab-view中强制重新渲染子组件

时间:2019-12-20 11:17:01

标签: reactjs react-native react-native-tab-view

如何重新呈现使用相同共享子组件的标签(react-native-tab-view)?

我有3个js文件; ParentTabViewItem

我在父级中有2个标签; AllDownloaded使用相同的子组件和不同的道具。我可以看到All中的所有项目,包括Downloaded个项目。我想在All标签上更新项目状态时,在Downloaded标签视图中更新项目状态。我尝试传递道具并使用回调,但即使使用forceUpdate方法,也无法通过它来更新其他选项卡上的视图。

父母:

renderScene = ({route}) => {
    switch (route.key) {
        case 'all':
            return <DocumentTabView /** ..props all items **/ />
        case 'downloaded':
            return <DocumentTabView /** ..props downloaded only **/ />
        default:
            return <DocumentTabView /** ..props all items **/ />
    }
};

render() {
    return (
        <TabView
            lazy
            navigationState={this.state}
            renderScene={this.renderScene}
            renderHeader={this.renderHeader}
            onIndexChange={this.handleIndexChange}
        />
    );
}

TabView:

render() {
    return (
        <SafeAreaView
            forceInset={{top: 'always'}}
            style={documentStyles.container}>
            <ScrollView
                contentContainerStyle={documentStyles.scrollview}
                refreshControl={
                <RefreshControl
                    refreshing={this.props.isRefreshing}
                    onRefresh={this.props.refreshCallback}
                />
            }>
                {this.state.dataSource.map((item, index) => {
                    return (
                        <Item /** ..props **/ />
                    );
                })}
            </ScrollView>
        </SafeAreaView>
    );
}

0 个答案:

没有答案