水平滚动视图在本机反应中不起作用

Posted

技术标签:

【中文标题】水平滚动视图在本机反应中不起作用【英文标题】:Horizontal Scroll View not working in react native 【发布时间】:2021-08-12 16:43:25 【问题描述】:

水平滚动视图在我的 react 本机应用程序中不起作用。下面是我的代码:

  return (
    <View style=styles.container>
      loading ? (
        <ActivityIndicator size="large" color=COLORS.blue />
      ) : (
        kioskData.map((item, index) => 
          return (
            <View key=index style=styles.container1>
              <ScrollView
                horizontal=true
                showsHorizontalScrollIndicator=false>
                <>
                  <Text>item.product_price</Text>
                  <Text>item.product_name</Text>
                </>
              </ScrollView>
            </View>
          );
        )
      )
    </View>
  );
;
const styles = StyleSheet.create(
  container: 
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    color: COLORS.black,
    backgroundColor: COLORS.white,
  ,
  container1: 
    flex: 1,
  ,
);

我不确定我哪里出错了。提前感谢您的帮助。

【问题讨论】:

【参考方案1】:

问题在于在循环内部的错误区域 (map) 中使用了 ScrollView

我们可以将列表文本元素包装在一个 ScrollView 组件中,而不是为列表中的每个项目创建一个独立的 ScrollView

让我们更新ScrollView 组件树来解决这个问题,

<View style=styles.container>
  loading ? (
    <ActivityIndicator size="large" color=COLORS.blue />
  ) : (
    <View style=styles.container1>
      <ScrollView horizontal showsHorizontalScrollIndicator=false>
        kioskData.map((item, index) => 
          return (
            <Fragment key=index>
              <Text>item.product_price</Text>
              <Text>item.product_name</Text>
            </Fragment>
          );
        )
      </ScrollView>
    </View>
  )
</View>

附加提示:

如果列表很大并且存在一些性能问题,您可以使用 FlatList 组件来实现相同的 UI。

  const renderItem = (item) => (
    <>
      <Text>item.product_price</Text>
      <Text>item.product_name</Text>
    </>
  );

  return (
    <View style=styles.container>
      loading ? (
        <ActivityIndicator size="large" color=COLORS.blue />
      ) : (
        <View style=styles.container1>
          <FlatList
            data=kioskData
            horizontal
            showsHorizontalScrollIndicator=false
            renderItem=renderItem
            keyExtractor=item => item.id
          />
        </View>
      )
    </View>
  );

【讨论】:

非常感谢。我尝试了第一个解决方案,它奏效了。我也会研究 Flatlist。

以上是关于水平滚动视图在本机反应中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

视频在本机反应(android)中不起作用

键盘焦点()在本机反应中不起作用

反应本机的NetInfo在ios中不起作用

带有两个键的导航在本机反应中不起作用

navigation.goBack 在本机反应中不起作用

网页上的水平滚动在 iOS 中不起作用