水平滚动视图不适用于本机反应
Horizontal Scroll View not working in react native
水平滚动视图在我的 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,
},
});
我不确定我哪里出错了。提前感谢您的帮助。
问题在于在循环 (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>
附加提示:
如果列表非常大并且有一些性能问题,您可以为相同的 UI 实现选择 FlatList
组件。
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>
);
水平滚动视图在我的 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,
},
});
我不确定我哪里出错了。提前感谢您的帮助。
问题在于在循环 (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>
附加提示:
如果列表非常大并且有一些性能问题,您可以为相同的 UI 实现选择 FlatList
组件。
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>
);