javascript - Swiper 只加载第一页

标签 javascript react-native swiper.js

React Native 仅正确加载第一页。这些项目来自数组。用数组填充是可行的,但从自定义组件加载则不行。仅当呈现另一个自定义组件时才会出现此问题。

//Main page render
render() {
    return (
        <ContainerView disableBackgroundButton={true} onLayout={this._onLayoutDidChange}>
            <Image
                source={require('../../img/barbershop_request.png')}
                style={styles.backgroundImage}>
                <View style={styles.overlay}></View>
            </Image>
            <ScrollView
                ref="scrollView"
                showsVerticalScrollIndicator={false}>
                <Swiper
                    loop={false}
                    showsPagination={false}
                    height={Global.constants.HEIGHT * 1.34}>
                    {this.createBarberItems()}
                </Swiper>
            </ScrollView>
        </ContainerView>
    )
}

createBarberItems() {
    ...
    for (index in barbers) {
        ...
        let barberItem = <BarberItemView />
        barberItems.push(barberItem)
    }

    // this works fine
    // let testItems = [];
    // testItems.push(<Text> here1</Text>)
    // testItems.push(<Text>here2</Text>)
    //return testItems;
    return barberItems;
}

//BarberItemView Render
render() {
    return (
            <Text>Barber Item View</Text>
    )
}

最佳答案

尝试用 View 组件包围 BarberItemView

render() {
return (
    <View>
      <Text>Barber Item View</Text>
    <View>
)
}

不要忘记从BarberItemView中的react-native库导入View组件

import React from 'react';
import {Text,
    View } from 'react-native';

这是我的主要 app.js 的样子

import React, { Component } from 'react';
import {
StyleSheet,
Text,
View,
ScrollView
} from 'react-native';
import BarberItemView from './BarberItemView';
import Swiper from 'react-native-swiper';

export default class ReactSwiper extends Component {
render() {
    return (
        // you can replace this view component with your own custom component
        <View style={{
            flex: 1,
            justifyContent: 'center',
            alignItems: 'center',
            backgroundColor: '#9DD6EB'
        }}>
            {/* <Image
            source={require('./barbershop_request.png')}
            style={styles.backgroundImage}>
            <View style={styles.overlay}></View>
        </Image> */}

            <ScrollView
                ref="scrollView"
                showsVerticalScrollIndicator={true}>
                <Swiper
                    loop={true}
                    showsPagination={true}>
                    {this.createBarberItems()}
                </Swiper>
            </ScrollView>
        </View>
    )
}

createBarberItems() {
    //since i don't know how your data looks like, i just use some dummy
    let barbers = [1, 2, 3, 4, 5]; // your barber array
    let barberItems = []; // your barber items
    for (index in barbers) {
        let barberItem = <BarberItemView />
        barberItems.push(barberItem)
    }

    return barberItems;

    // this works fine
    // let testItems = [];
    // testItems.push(<Text> here1</Text>)
    // testItems.push(<Text>here2</Text>)
    // return testItems;
}


}

关于javascript - Swiper 只加载第一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45178657/

相关文章:

javascript - Ajax:使用onclick jQuery连续刷新div

html - 使用带有顺风的 flex-row 和 flex-col 无法使用计算机和电话正确对齐

javascript - 遍历类数组Angular4

javascript - 如何在Mootools中获取点击元素的索引

javascript - 追加数据表成功,但 ad 部分消失了

javascript - 获取引导模式链接的数据属性

react-native - Realm 如何处理关联?

ios - ReactNative 0.59.8 项目 - 应用商店发布时无法存档 iOS 版

react-native - 如何在UI react native Flatlist中显示音频播放器

angular - 使用 ngx-swiper-wrapper 实现带有拇指的图像 slider