React native: Impossible d'ajouter un enfant qui n'a pas de YogaNode ou de noeud parent
Juste commencé à apprendre à réagir indigènes,
J'ai créé un fichier séparé flexdemo.js et créé composant comme ci-dessous:
import React, { Component } from 'react';
import { View } from 'react-native';
export default class FlexibleViews extends Component {
render() {
return (
<View style={{ flex: 1 }}>
<View style={{ flex: 1, backgroundColor: "powderblue" }}> </View>
<View style={{ flex: 2, backgroundColor: "skyblue" }}> </View>
<View style={{ flex: 3, backgroundColor: "steelblue" }}> </View>
</View>
);
}
}
et App.js fichier est comme ci-dessous:
import React, { Component } from 'react';
import {
AppRegistry,
Platform,
StyleSheet,
Text,
View, Image
} from 'react-native';
//import Bananas from './src/banana';
//import LotsOfStyles from './src/styledemo'
import FlexibleViews from './src/flexdemo';
export default class App extends Component {
render() {
return (
//<Bananas name = "Tapan"/>
<View>
<FlexibleViews />
</View>
);
}
}
Que me donne cette erreur:
Maintenant, si j'essaie d'exécuter le code en ajoutant flexdemo.js code dans App.js ensuite tout fonctionne bien.
Changé Le App.js comme ceci:
import React, { Component } from 'react';
import { AppRegistry, View } from 'react-native';
export default class FlexDimensionsBasics extends Component {
render() {
return (
//Try removing the `flex: 1` on the parent View.
//The parent will not have dimensions, so the children can't expand.
//What if you add `height: 300` instead of `flex: 1`?
<View style={{flex: 1}}>
<View style={{flex: 1, backgroundColor: 'powderblue'}} />
<View style={{flex: 2, backgroundColor: 'skyblue'}} />
<View style={{flex: 3, backgroundColor: 'steelblue'}} />
</View>
);
}
}
source d'informationauteur TapanHP
Vous devez vous connecter pour publier un commentaire.
Supprimer les commentaires à l'intérieur du composant.
Je veux donner un cadre plus général de réponse ici, car il peut y avoir plusieurs raisons pour la question retour le même message d'erreur. Les trois j'ai vu les plus:
1. Commentaires peut-être la cause. Mais au lieu de supprimer les commentaires que les
leur travail:
...tant qu'ils ne sont pas le premier ou le dernier élément de l'instruction de retour:
2. Rendu conditionnel peut-être la cause. Si myCheck est pas défini ou
une chaîne vide cela peut échouer:
mais l'ajout de double négation !! œuvres:
3. Des espaces (ou en fait toutes les chaînes) dans un composant peut provoquer
cela, si ce n'est dans un
<Text>
-Composant:Texte en Vue par exemple:
Mais aussi l'espace minuscule entre deux composants:
Mais fonctionne si dans un retour à la ligne:
Malheureusement, ces pièges ne sont pas toujours conduire à des erreurs. Parfois, ils travaillent. Je suppose que cela dépend de tous les nombreux outils/lybraries/composants que vous utilisez et leurs versions de votre application.
J'ai été en mesure de reproduire le problème avec le code que vous avez fournis. La solution est double:
Dans votre flexdemo.js fichier, vous devez supprimer les espaces de l'intérieur de la
<View>
balises. Ils sont considérés comme du texte, et le texte est permis qu'à l'intérieur d'un<Text>
composant. Je vous recommande de faire votre<View>
les balises de fermeture automatique jusqu'à ce qu'ils ont une partie du contenu, à rester à l'écart de cette question dans l'avenir, comme suit:Cela rendra vos composants, mais encore être défectueux, vous ne voyez rien sur l'écran.
Pour obtenir votre flexible nuances de bleu à apparaître, vous devrez ajouter flex pour la
<View>
composant dans votre App.js fichier ou(en fonction de ce que sont vos prochaines étapes, je suppose) de la supprimer et de rendre votre<FlexibleViews>
que le composant racine, car il est fondamentalement un<View>
composant avec des enfants de toute façon.Je downgrade réagir version native, puis j'ai eu une autre erreur, en gros ce que c'était, j'ai eu une simple chaîne de caractères dans une vue, quelque chose comme ceci:
J'ai dû enroulez la corde avec un composant de texte comme ceci:
espère que ça aide
Si vous avez
if else
déclaration dans votrerender()
fonction de l'utilisation!!
comme ceci:au lieu de:
Cette erreur est généralement de l'un des ci-dessous erreurs
Supprimer le commentaire dans le retour de bloquer les "//"
J'ai rencontré le même problème quand j'ai accidentellement ajouter un ';' dans le retour de bloc, l'iOS fonctionne bien, mais Android a ce bug de l'information
Supprimer le point-virgule lors du rendu d'une méthode dans
<View style={styles.container}>
{this.renderInitialView()} //semi-color should not be here
</View>
J'ai rencontré le même problème tout à l'heure et résolu en supprimant les commentaires que j'ai faits lors de l'édition du projet dans android studio et plus il y a le commentaire de shorotcut ajoute simplement /* et */, mais en fait pour réagir natif le code commenté, doit être joint à de démarrage et de fin des accolades, par exemple suite à la serait pas valide commentaire:
Et la suivante est valide:
vous voir il y a juste une petite différence de enfermant les commentaires dans des accolades.