【问题标题】:How to use refresh control inside a native-base tab?如何在本机基础选项卡中使用刷新控件?
【发布时间】:2018-11-01 09:41:22
【问题描述】:

我有一个原生选项卡,里面有一个列表,我想在下拉列表时使用 RefreshControl 来刷新列表,但是我无法让它正常工作。我已经在其他几个地方实现了 RefreshControl,但它不会在我的选项卡内运行。 这是选项卡所在的代码。仅当我尝试将其包含在选项卡中或被调用的组件中时,将其放入此处放置的内容标记中才有效。当您下拉时,不会发生任何事情。

render() {
    const { navigation } = this.props;
    return (
            <Container>
                <Content >
                    <Tabs locked= {true}>
                        <Tab heading="Active" >
                                <PharmacyActiveView screenProps={this.state.username} nav={navigation}/>
                        </Tab>
                        <Tab heading="Expired">
                               <PharmacyExpiredView screenProps={this.state.username} nav={navigation}/>
                        </Tab>
                    </Tabs>
                </Content>
            </Container>
    );
}

这里是 PharmacyActiveView 代码。我已经尝试在此处包含刷新控件,但无论如何 onRefresh 方法都不会被命中。

onRefresh() {
        this.setState(() => { return { pageNumber: 1, refreshing: true } }, () => {
            this.getActivePharmacyPrescriptions(this.state.pageNumber, global.defaultValues.pageSize, false);
        });
    }

render() {
        const footerStyle = this.state.metaData == undefined ? null : (this.state.metaData.HasNextPage ? style.footerViewActive : style.footerViewInactive);
        return (
            <View refreshControl={
                <RefreshControl
                    onRefresh={this.onRefresh.bind(this)}
                    refreshing={this.state.refreshing}
                    colors={[sharedStyle.mainColor]} //android
                    tintColor={sharedStyle.mainColor} //ios
                    progressBackgroundColor={'#fff'}
                />
            }>
                <FlatList
                    style={style.pharmacyFlatList}
                    data={this.state.data}
                    renderItem={this._renderItem}
                    keyExtractor={(x, i) => i}
                    extraData={this.state}
                />
            </View>
        );
    }

如果您需要更多信息,请告诉我,我刚刚包含了我认为相关的代码。感谢您的帮助!

【问题讨论】:

    标签: reactjs react-native tabs native-base


    【解决方案1】:

    刷新控件必须分配给内容组件的 refreshControl 属性。将内容移至子组件,而不是将其置于高级:

    render() {
        const { navigation } = this.props;
        return (
            <Container>
                <Tabs locked= {true}>
                    <Tab heading="Active" >
                        <PharmacyActiveView screenProps={this.state.username} nav={navigation}/>
                    </Tab>
                    <Tab heading="Expired">
                        <PharmacyExpiredView screenProps={this.state.username} nav={navigation}/>
                    </Tab>
                </Tabs>
            </Container>
        );
    }
    

    确保 Content 是每个子元素的基础/第一个组件:

    onRefresh() {
        this.setState(() => { return { pageNumber: 1, refreshing: true } }, () => {
            this.getActivePharmacyPrescriptions(this.state.pageNumber, global.defaultValues.pageSize, false);
        });
    }
    
    render() {
        const footerStyle = this.state.metaData == undefined ? null : (this.state.metaData.HasNextPage ? style.footerViewActive : style.footerViewInactive);
        return (
            <Content refreshControl={
                <RefreshControl
                    onRefresh={this.onRefresh.bind(this)}
                    refreshing={this.state.refreshing}
                    colors={[sharedStyle.mainColor]} //android
                    tintColor={sharedStyle.mainColor} //ios
                    progressBackgroundColor={'#fff'}
                />
            }>
                <FlatList
                    style={style.pharmacyFlatList}
                    data={this.state.data}
                    renderItem={this._renderItem}
                    keyExtractor={(x, i) => i}
                    extraData={this.state}
                />
            </Content>
        );
    }
    

    更多详情请访问:
    Native Base - Pull to refresh is not working with Tab layout

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多