【问题标题】:Can I pass an array to a React Native ScrollView?我可以将数组传递给 React Native ScrollView 吗?
【发布时间】:2020-08-09 06:48:37
【问题描述】:

我正在尝试使用 React Native 的 ScrollView 创建一个可滚动的视图,代码如下

import React from 'react';
import { Image, ScrollView, Text, StyleSheet, View, Dimensions } from 'react-native';

const styles = StyleSheet.create({
    scrollView: {
        height: '100%',
        width: '100%',
        flexDirection: 'column',
    },
    item: {
        height: '20%',
        width: '100%',
    },
});

const data = [];
for (let i = 0; i < 30; i++) {
    const datum = (
        <View style={styles.item}>
            <Text style={{ fontSize: 30 }}>{i.toString()}</Text>
        </View>
    );
    data.push(datum);
}

const App = () => (
    <ScrollView style={styles.scrollView}>
        {data}
    </ScrollView>
);
export default App;

小吃网址:https://snack.expo.io/rp6!W!HZm

当我在 Snack 中运行此代码时,似乎无法向下滚动到第二页。我检查了 ScrollView 的官方文档,它正在将 ReactElement 单独传递到视图中。

RN官方文档:https://reactnative.dev/docs/using-a-scrollview

这是否意味着我不能将元素数组作为 ScrollView 的子元素传递?我在这里有什么遗漏吗?

【问题讨论】:

    标签: react-native


    【解决方案1】:

    使用平面列表:

    import React, {Component} from 'react';
    import{AsyncStorage, View, ScrollView, FlatList} from 'react-native';
    import {Text, List} from 'native-base';
    
    class Notes extends Component {
    
      constructor(props) {
    
        super(props);
    
        this.state = {
          data: []
        }
    
      }
    
    
      render () {
    
        return (
            <ScrollView>
            <View style={{margin: 5, marginTop: 5}}>     
            <List>
                <FlatList
                    data={this.state.data}
                    renderItem={({item, index}) =>
                    <View style={styles.item}>
                      <Text style={{ fontSize: 30 }}>{item.toString()}</Text>
                    </View>       
                    }
                    keyExtractor={(item, index) => index.toString()}
                />
            </List>
    
            </View> 
            </ScrollView>
        )
      }
    
    
    
    
    }
    
    export default Notes;
    

    【讨论】:

    • 我只想使用一个简单的 ScrollView,因为它们不会包含很多项目。顺便说一句,将 FlatList 放在 ScrollView 中是一回事吗?为什么不直接使用 FlatList 呢?
    • 你可以只使用 flatList,我给出的示例在我删除的滚动视图中有更多项目
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 2016-01-11
    • 1970-01-01
    相关资源
    最近更新 更多