Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React native,根据项目包含的空间设置平面列表容器的高度_Javascript_Reactjs_React Native - Fatal编程技术网

Javascript React native,根据项目包含的空间设置平面列表容器的高度

Javascript React native,根据项目包含的空间设置平面列表容器的高度,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我试图将flatlist容器的高度设置为其项占用的空间的高度,如下图所示 但我得到了同样的结果 第二个物品容器占用了和第一个物品容器相同的空间,有人能告诉我如何修复吗?下面是我的代码 <FlatList data={data} keyExtractor={(item) => item._id.toString()} renderItem={({ item }) => { return ( <Touch

我试图将flatlist容器的高度设置为其项占用的空间的高度,如下图所示

但我得到了同样的结果

第二个物品容器占用了和第一个物品容器相同的空间,有人能告诉我如何修复吗?下面是我的代码

<FlatList
        data={data}
        keyExtractor={(item) => item._id.toString()}
        renderItem={({ item }) => {
    return (
      <TouchableOpacity
        style={styles.container}
        onPress={() =>
          navigation.navigate(strings.VIEW_QUOTE, {
            image: item.image_url,
            text: item.description,
          })
        }
      >
        <Image
          source={{
            uri: item.image_url,
          }}
          style={{
            height: moderateScaleVertical(153),
            resizeMode: "stretch",
          }}
        />
        <Text style={styles.text}>{item.description}</Text>
      </TouchableOpacity>
    );
  }}
        numColumns={2}
        style={{
          marginHorizontal: moderateScale(12),
        }}
      />
....
const styles = StyleSheet.create({
  container: {
    overflow: "hidden",
    marginHorizontal: moderateScaleVertical(4),
    marginTop: moderateScaleVertical(20),
    borderWidth: 1,
    borderColor: colors.blackOpacity15,
    borderRadius: 5,
    flex: 1,
  },
  text: {
    ...commonStyles.fontSize15,
    fontFamily: fontFamily.medium,
    marginHorizontal: moderateScale(6),
  },
});
item.\u id.toString()}
renderItem={({item})=>{
返回(
导航。导航(strings.VIEW){
image:item.image\u url,
文本:项目说明,
})
}
>
{item.description}
);
}}
numColumns={2}
风格={{
marginHorizontal:中等规模(12),
}}
/>
....
const styles=StyleSheet.create({
容器:{
溢出:“隐藏”,
边缘水平:中等水平垂直(4),
marginTop:中等比例垂直(20),
边框宽度:1,
边框颜色:colors.blackOpacity15,
边界半径:5,
弹性:1,
},
正文:{
…commonStyles.fontSize15,
fontFamily:fontFamily.medium,
marginHorizontal:中等规模(6),
},
});

您可以将onLayout函数放入FlatList

const [flatListHeight, setFlatListHeight] = useState(0);

const onLayout = (e) => {
   setFlatListHeight(e.nativeEvent.layout.height);
}

return (
  <FlatList onLayout={onLayout} />
);
const[flatListHeight,setFlatListHeight]=useState(0);
const onLayout=(e)=>{
setFlatListHeight(例如nativeEvent.layout.height);
}
返回(
);

flex:1
在容器样式中可能是原因,请尝试删除它。在web开发中,您试图实现的就是所谓的砖石布局。我使用了一个名为“react native Mashine layout”的库来实现相同的效果。也许对你有帮助。