【发布时间】:2021-07-05 16:32:33
【问题描述】:
我正在渲染来自循环值的平面列表项目,它当前正在渲染 5 个项目,我想根据正在渲染的数量更改这些项目的宽度,例如,如果我想渲染 10 个项目,宽度将相应调整.我尝试了不同的方法,但似乎都没有奏效。 ps:我的目标是在不需要滚动的情况下渲染这些项目,我希望这10个项目能够完全显示
到目前为止,这是我的代码:
import React, { useEffect, useState } from 'react';
import { View, FlatList, Text, TouchableOpacity } from 'react-native';
import { StyleSheet } from 'react-native';
import { Button } from 'react-native-paper';
export default function Detailmodal({ value, update, setModal }) {
const [ max, setMax ] = useState(35);
const [ min, setMin ] = useState(30);
const [ data, setData ] = useState([]);
useEffect(
() => {
let tempData = [];
for (let i = min; i <= max; i++) {
tempData.push(i);
}
setData(tempData);
},
[ min, max ]
);
const toggleNext = () => {
setMin(max);
setMax(max + 5);
};
const togglePrev = () => {
setMax(min);
setMin(min - 5);
};
const Item = ({ value }) => (
<TouchableOpacity onPress={() => updateParent(value)}>
<View style={styles.temp}>
<Text style={styles.title}>{value}</Text>
</View>
</TouchableOpacity>
);
const renderItem = ({ item }) => {
return <Item value={item} />;
};
const updateParent = (value) => {
update(value);
setModal(false);
};
return (
<View style={styles.container}>
<Button mode='contained' onPress={togglePrev}>
prev
</Button>
<FlatList data={data} renderItem={renderItem} keyExtractor={(item) => item.name} horizontal />
<Button mode='contained' onPress={toggleNext}>
next
</Button>
</View>
);
}
const styles = StyleSheet.create({
container : {
flexDirection : 'row',
justifyContent : 'center',
alignItems : 'center',
margin : 50,
paddingVertical : 50,
backgroundColor : 'white'
},
contentContainerStyle : {
justifyContent : 'center',
alignItems : 'center'
},
value : {
fontWeight : '500',
fontSize : 50,
color : 'black',
position : 'absolute'
},
txtInput : {
fontSize : 25,
textAlign : 'center'
},
temp : {
backgroundColor : '#b19cd9',
height : 170,
justifyContent : 'center',
marginVertical : 20,
marginHorizontal : 15,
padding : 15,
width : 140,
alignItems : 'center'
},
title : {
fontSize : 32
}
});
【问题讨论】:
标签: react-native width styling