gpt4 book ai didi

javascript - react-native Swiper 在模态中是空白的

转载 作者:行者123 更新时间:2023-11-30 20:54:19 24 4
gpt4 key购买 nike

我使用 react-native 和 react-native-swiper

哪个操作系统?

安卓

版本

您使用的是哪个版本:

  • react-native-swiper v1.5.13?
  • react-native v0.51.0

实际行为

我在其中显示一个带有滑动器的模态框。我得到一个空白显示,只有滑动器的按钮,但没有内容

预期行为

在模式中显示滑动器的内容

如何重现它>

我尝试用我的代码的一个非常简化的版本来重现这个错误

在零食中尝试 https://snack.expo.io/rk8rb3ZzM

或者我的代码

        import React, { Component } from "react";
import { Text, View, Modal, Dimensions } from "react-native";
import Swiper from "react-native-swiper"; // 1.5.13
import { Button } from "react-native-elements"; // 0.18.5

import "@expo/vector-icons"; // 6.2.1

var width = Dimensions.get("window").width;
var height = Dimensions.get("window").height;

export default class extends Component {
constructor(props) {
super(props);
this.state = {
items:[
{ title: "Hello Swiper", css: thisstyles.slide1 },
{ title: "Beautiful", css: thisstyles.slide2 },
{ title: "simple", css: thisstyles.slide3 },
{ title: "And simple", css: thisstyles.slide3 }
],
modalVisible: false
};
}
componentDidMount() {

}
// affiche / cache la modal avec l'image en plein écran
toggleModalVisible = () => {
this.setState({ modalVisible: !this.state.modalVisible });
};

// vue plein écran avec zoom sans info
renderFullScreen() {
if (!this.state.modalVisible) {
return null;
}
return (
<Modal
animationType={"slide"}
transparent={false}
visible={this.state.modalVisible}
onRequestClose={() => this.toggleModalVisible()}
>
<View style={thisstyles.modalFullScreen}>
<Text>I have component and text here</Text>
<Swiper style={thisstyles.wrapper} showsButtons={true}>
{this.state.items.map((item, key) => {
console.log("item", item);
return (
<View key={key} style={item.css}>
<Text style={thisstyles.text}>{item.title}</Text>
</View>
);
})}
</Swiper>
</View>
</Modal>
);
}

render() {
return (
<Swiper style={thisstyles.wrapper} showsButtons={true}>
{this.state.items.map((item, key) => {
console.log("item", item);
return (
<View key={key} style={item.css}>
<Text style={thisstyles.text}>{item.title}</Text>
{this.renderFullScreen()}
<Button
title="modal"
onPress={() => this.toggleModalVisible()}
icon={{ name: "close", type: "font-awesome" }}
/>
</View>
);
})}
</Swiper>

);
}
}

const thisstyles = {
modalFullScreen: {
height: height,
width: width
},
wrapper: {},
slide1: {
flex: 1,
justifyContent: "center",
alignItems: "center",
backgroundColor: "#9DD6EB"
},

slide2: {
flex: 1,
justifyContent: "center",
alignItems: "center",
backgroundColor: "#97CAE5"
},

slide3: {
flex: 1,
justifyContent: "center",
alignItems: "center",
backgroundColor: "#92BBD9"
},

text: {
color: "black",
fontSize: 30,
fontWeight: "bold"
}
};

重现步骤

  1. 运行应用
  2. 点击“x 模态”按钮

最佳答案

我必须添加延迟才能使我的工作正常,但它确实有效!

  constructor(props) {
super(props);
this.state = { showSwiper: false };
}

componentDidMount() {
// Must use this 100-ms delayed swiper workaround to render on Android properly
setTimeout(() => {
this.setState({showSwiper: true});
}, 100);
}

render() {
var exampleSwiper = (
<Swiper activeDotColor={'white'} loop={false} >
<View style={{width: 100, height: 100, backgroundColor: 'white'}} />
<View style={{width: 100, height: 100, backgroundColor: 'white'}} />
<View style={{width: 100, height: 100, backgroundColor: 'white'}} />
</Swiper>
);
return (
<Modal presentationStyle={'overFullScreen'}>
{this.state.showSwiper ? exampleSwiper : null}
</Modal>
);
}

关于javascript - react-native Swiper 在模态中是空白的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47835675/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com