React-Native-Snap-Karussell wird nicht richtig gerendert

bzlight

Zusammenfassung des Problems

Ich verwende React-Native-Snap-Karussell und es wird nicht richtig gerendert. Es wird erst gerendert, nachdem es gewischt wurde, und ich muss es rendern, wenn der Bildschirm anfänglich gerendert wird. Wenn ich den Bildschirm der Anfangsroute meines BottomTabNavigator oder der Anfangsroute in meinem Stack Navigator in React Navigation zugewiesen habe, wird das Karussell perfekt gerendert. Wenn ich einer anderen Route in einem Stack Navigator genau denselben Bildschirm zuordne, wird das Karussell erst gerendert, wenn ich darüber wische.

Ich muss den Bildschirm mit dem Karussell als zweite Route in meinem Stack Navigator verwenden und kann nicht herausfinden, wie es richtig funktioniert.

Was ich versucht habe

  1. Ich habe versucht, alles andere vom Bildschirm zu entfernen
  2. Ich habe auch versucht, einen neuen Bildschirm von Grund auf neu zu erstellen.
  3. Ich habe den Bildschirm als erste Route im Stack Navigator getestet und er funktioniert einwandfrei, aber ich kann das Karussell beim Laden des Bildschirms immer noch nicht rendern.
  4. Ich habe auch versucht, zu einer klassenbasierten Reaktionskomponente zu wechseln, und das hat nicht geholfen.

Code

Komponente mit Karussell

import React, { useState } from "react";
import { View, Text } from "react-native";
import { useDispatch } from "react-redux";
import styles from "./StatSelectorStartComp.style";
import HeaderText from "~/app/Components/HeaderText/HeaderText";
import Carousel from "react-native-snap-carousel";
import LargeButton from "~/app/Components/Buttons/LargeButton/LargeButton";
import NavigationService from "~/app/services/NavigationService";
import { saveStartCompStatCategory } from "~/app/Redux/actions/dailyCompActions";

const StatSelectorStartComp = ({}) => {
  const dispatch = useDispatch();
  const ENTRIES1 = ["Kills", "Wins", "K/D", "Win %"];
  const [selectedStat, setSelectedStat] = useState(ENTRIES1[0]);

  const _renderItem = ({ item, index }) => {
    return (
      <View style={styles.slide}>
        <Text style={styles.compSelectStatCarousel}>{item}</Text>
      </View>
    );
  };

  return (
    <View style={styles.container}>
      <View style={styles.headerTextView}>
        <HeaderText header={"Configure Competition"} />
      </View>
      <Text style={styles.h5Secondary}> Which stat will you track?</Text>
      <View style={styles.selectStatView}>
        <Text style={styles.mediumGreyedOut}>Most {selectedStat} Wins</Text>
        <Carousel
          ref={c => {
            _carousel = c;
          }}
          data={ENTRIES1}
          renderItem={_renderItem}
          sliderWidth={375}
          itemWidth={100}
          onSnapToItem={index => {
            setSelectedStat(ENTRIES1[index]);
          }}
        />
      </View>
      <View style={styles.buttonView}>
        <LargeButton
          onPress={() => {
            dispatch(saveStartCompStatCategory(selectedStat));
            NavigationService.navigate("CompAddFriends");
          }}
          buttonText="Add Friends"
        />
      </View>
    </View>
  );
};

export default StatSelectorStartComp;

Stile für Komponenten mit Karussell

import { StyleSheet } from "react-native";
import { backgroundColor } from "~/app/Constants";
import {
  h5Secondary,
  mediumGreyedOut,
  compSelectStatCarousel
} from "~/app/FontConstants";

export default StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: "space-between",
    backgroundColor
  },
  headerTextView: {
    flex: 1
  },
  h5Secondary,
  selectStatView: {
    flex: 3
  },
  mediumGreyedOut,
  compSelectStatCarousel,
  buttonView: {
    flex: 2
  }
});

Navigationskonfiguration reagieren

const StartCompStack = createStackNavigator({
  StartFriendsComp: {
    screen: StartFriendsComp
  },
  StatSelectorStartComp: {
    screen: CarouselTest
  },
  CompAddFriends: {
    screen: CompAddFriends
  },
  FinalCompScreen: {
    screen: FinalCompScreen
  }
});

const ProfileStack = createStackNavigator({
  Profile: {
    screen: ProfileScreen
  },
  Settings: {
    screen: SettingsScreen
  }
});

const BottomTabNav = createBottomTabNavigator(
  {
    Home: {
      screen: HomeScreen
    },
    Competitions: {
      screen: Competitions
    },
    StartComp: {
      screen: StartCompStack,
      navigationOptions: () => ({
        tabBarVisible: false
      })
    },
    CompScreen: {
      screen: CompScreen
    },
    Friends: {
      screen: FriendsDrawer
    },
    Profile: {
      screen: ProfileStack
    },
    FacebookFriendsList
  },
  {
    tabBarComponent: CustomTabNav,
    initialRouteName: "Home" 
  }
);

Bilder, die das Problem umreißen

Beim Laden des Bildschirms wird das Karussell nicht gerendert Beim Laden des Bildschirms wird das Karussell nicht gerendert

Nach dem Wischen auf Karussell Nach dem Wischen auf Karussell

Mehran Khan |

Das gleiche Problem trat bei unserem Projekt auf und ein kleiner Trick half uns. Wir haben den Standardladezustand auf true und in componentDidMount auf false gesetzt, um das Karussell anzuzeigen

Versuchen Sie dies, es kann Ihnen helfen

state = { loading: true };

  componentDidMount() {
    setTimeout(() => {
      this.setState({ loading: false });
    }, 10);
  }
  render() {
    if(this.state.loading) {
      return null;
    }

    // return component render which contain Carousel
    ......... 
  }

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

React-Native-Snap-Karussell kann nicht verwendet werden

React Native - Diagramm wird nicht richtig gerendert, nachdem Daten geändert (hinzugefügt) wurden

CanvasJS-Diagramm wird mit Diashow-/Karussell-Container nicht richtig gerendert

React-Bootstrap Navbar wird in React js nicht richtig gerendert

Route wird nicht richtig gerendert

Dreieck wird nicht richtig gerendert

Kodierung wird nicht richtig gerendert

React-Widget-Komponente wird nicht richtig gerendert

Legen Sie mit Use Effect React Native ein Ablaufdatum fest, aber der Bildschirm wird nicht richtig gerendert

Bootstrap-Karussell wird nicht richtig angezeigt

React Native: useState wird nicht richtig aktualisiert

Die native React-Native-Geocodierungsadresse wird nicht gerendert

React-Native: Das CreateBottomTabBar-Symbol wird nicht gerendert

React Native: TabView wird nach Änderung nicht erneut gerendert

React Native Nested AsyncStorage Aufruf wird nicht gerendert

Ganzzahl wird in der Textbox in React native nicht gerendert

Der Stil wird in React Native nicht neu gerendert

Benutzerdefinierte Funktion wird nicht auf React Native gerendert

ListView-Zeile wird in React Native nicht gerendert

React Native: Array.map wird in Scrollview nicht gerendert

Komponente wird nicht innerhalb der Kartenfunktion gerendert - React Native

Warum wird meine React-Native-Komponente nicht gerendert?

Antwortobjekt wird in der Antwortfunktion nicht richtig gerendert

Handsontable in Shiny Modal wird nicht richtig gerendert

Diagramm wird nicht richtig gerendert, canvasjs

SVG-JavaScript wird nicht richtig gerendert

Verschachteltes Layout wird nicht richtig gerendert

Twilio - vCard wird nicht richtig gerendert

Bootstrap-Button wird nicht richtig gerendert