gpt4 book ai didi

reactjs - React Native swiper 在 IOS 的 StackNavigator 中不起作用

转载 作者:行者123 更新时间:2023-12-05 08:52:30 24 4
gpt4 key购买 nike

在我的应用程序中,我有登录屏幕忘记密码屏幕注册屏幕。在注册屏幕我使用了react-native-swiper显示注册过程的三个步骤的幻灯片。我在 StackNavigator 中封装了这些屏幕,并将此 StackNavigator 作为我的 App.js 中的根组件呈现。

这是我的 StackNavigator :

Router.js

import { createDrawerNavigator, createAppContainer, createStackNavigator } from 'react-navigation';
import Login from './src/containers/Login';
import SignUp from './src/containers/SignUp';
import ForgotPassword from './src/containers/ForgotPassword';

const AuthStackNavigator = createStackNavigator({
Login: {
screen: Login
},
ForgotPassword: {
screen: ForgotPassword
},
SignUp: {
screen: SignUp
},
});

const Router = createAppContainer(AuthStackNavigator)

export default Router

App.js

import React, { Component } from 'react';
import { Provider } from 'react-redux';
import configureStore from './src/store/configureStore';
import Router from './Router';

const store = configureStore()

class App extends Component {
render() {
return (
<Provider store={store}>
<Router />
</Provider>
);
}
}

export default App

SignUp.js

import React, { Component } from 'react';
import { View, StyleSheet, TouchableOpacity, KeyboardAvoidingView, Platform, Dimensions } from 'react-native';
import Swiper from 'react-native-swiper';
import Colors from '../../config/Colors';
import Logo from '../components/Logo';
import MText from '../components/MText';
import StepButton from '../components/StepButton';
import SignUpStepOne from './SignUpStepOne';
import SignUpStepTwo from './SignUpStepTwo';
import SignUpStepThree from './SignUpStepThree';

class SignUp extends Component {

static navigationOptions = ({navigation}) => ({
header: null
});

constructor(props) {
super(props);
this.state = {
activeStep: 0
};
}

slideToNext = () => {
this.swiper.scrollBy(1, true);
this.setState(prevState => ({
activeStep: prevState.activeStep + 1
}))
}

slideToPrev = () => {
this.setState(prevState => ({
activeStep: prevState.activeStep - 1
}), () => {
this.swiper.scrollBy(-1, true);
})
}

render() {
<KeyboardAvoidingView style={styles.container} behavior="padding">
<View style={{ flex: 1, paddingHorizontal: 10 }}>

<Logo />

<Swiper
style={{

}}
ref={(swiper) => { this.swiper = swiper; }}
containerStyle={{ flex: 1 }}
showsButtons={false}
showsPagination={false}
loop={false}
scrollEnabled={false}
onIndexChanged={(activeStep) => {
this.setState({
activeStep
})
}}
>
<SignUpStepOne onNext={this.slideToNext} />
<SignUpStepTwo onNext={this.slideToNext} onPrev={this.slideToPrev} />
<SignUpStepThree onNext={this.slideToNext} onPrev={this.slideToPrev} />
</Swiper>

</View>
</KeyboardAvoidingView>
}
}

但是,问题是当我使用 this.props.navigation.navigate('SignUp')登录屏幕导航到注册屏幕时, Swiper 组件未在注册屏幕中显示任何内容。它只是空白。对于 android 它工作正常,对于 IOS 它不工作。

另一件需要注意的事情是,如果我只是在 App.js 中将 SignUp 屏幕呈现为根,那么它就可以正常工作。

而且,如果我将 SignUp 屏幕设置为我的 StackNavigator 中的初始屏幕,那么它也可以正常工作。

请任何人帮我看看这里出了什么问题?

最佳答案

我找到了解决方案。

添加 removeClippedSubviews={false} 属性到滑动器。然后它将起作用。

关于reactjs - React Native swiper 在 IOS 的 StackNavigator 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56698225/

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