Comment transmettre des données du composant enfant au composant parent dans ReactJS ?
P粉441076405
2023-08-27 13:34:07
<p>J'essaie d'envoyer des données d'un composant enfant à son composant parent comme ceci : </p>
<pre class="brush:php;toolbar:false;">const ParentComponent = React.createClass({
getInitialState() {
retour {
langue: '',
} ;
},
handleLanguageCode : fonction (langValue) {
this.setState({langue : langValue});
},
rendre() {
retour (
<div className="col-sm-9" >
<SelectLanguage onSelectLanguage={this.handleLanguage}/>
</div>
);
});</pré>
<p>Voici le sous-composant : </p>
<pre class="brush:php;toolbar:false;">export const SelectLanguage = React.createClass({
getInitialState : fonction(){
retourner{
Code sélectionné : ',
Langue sélectionnée : ',
} ;
},
handleLangChange : fonction (e) {
var lang = this.state.selectedLanguage;
var code = this.state.selectedCode;
this.props.onSelectLanguage({selectedLanguage: lang});
this.props.onSelectLanguage({selectedCode: code});
},
rendre() {
var json = require("json!../langues.json");
var jsonArray = json.langues;
retour (
<div>
<DropdownList ref='dropdown'
données={jsonArray}
value={this.state.selectedLanguage}
caseSensitive={faux}
minLongueur={3}
filtre='contient'
onChange={this.handleLangChange} />
</div>
);
}
});</pré>
<p>Ce dont j'ai besoin, c'est d'obtenir la valeur sélectionnée par l'utilisateur dans le composant parent. J'obtiens cette erreur : </p>
<pre class="brush:php;toolbar:false;">Uncaught TypeError : this.props.onSelectLanguage n'est pas une fonction</pre>
<p>Quelqu’un peut-il m’aider à résoudre le problème ? </p>
<p>Le sous-composant P.S. crée une liste déroulante à partir d'un fichier json, j'ai besoin de la liste déroulante pour afficher deux éléments d'un tableau json l'un à côté de l'autre (par exemple : "aaa, anglais" comme je préfère !)</p>
<pre class="brush:php;toolbar:false;">{
"langues":[
[
"aaa",
"Anglais"
],
[
"aab",
"suédois"
],
}</pré>
<p><br /></p>
Transmettre les données du composant enfant au composant parent
Dans le composant parent :
Dans le composant enfant :
Cela devrait fonctionner. Lorsque vous renvoyez l'accessoire, vous l'envoyez en tant qu'objet au lieu de l'envoyer en tant que valeur ou de l'utiliser comme objet dans le composant parent. Deuxièmement, vous devez formater l'objet json pour qu'il contienne des paires nom-valeur et utiliser l'attribut
的DropdownList
valueField
和textField
Réponse courte
Parent :
Enfants :
Détails :
Éditeur :
Étant donné que React.createClass est obsolète depuis la v16.0, il est préférable de créer des composants React en étendant
React.Component
. La transmission des données du composant enfant au composant parent en utilisant cette syntaxe ressemblera à ceciParent
Enfants
Utilisez la syntaxe
createClass
que l'OP a utilisée dans sa réponse ParentEnfants
JSON :