J'essaie d'envoyer des données d'un composant enfant à son parent comme suit :
const ParentComponent = React.createClass({
getInitialState() {
return {
language: '',
};
},
handleLanguageCode: function(langValue) {
this.setState({language: langValue});
},
render() {
return (
<div className="col-sm-9" >
<SelectLanguage onSelectLanguage={this.handleLanguage}/>
</div>
);
});
et voici le composant enfant :
export const SelectLanguage = React.createClass({
getInitialState: function(){
return{
selectedCode: '',
selectedLanguage: '',
};
},
handleLangChange: function (e) {
var lang = this.state.selectedLanguage;
var code = this.state.selectedCode;
this.props.onSelectLanguage({selectedLanguage: lang});
this.props.onSelectLanguage({selectedCode: code});
},
render() {
var json = require("json!../languages.json");
var jsonArray = json.languages;
return (
<div >
<DropdownList ref='dropdown'
data={jsonArray}
value={this.state.selectedLanguage}
caseSensitive={false}
minLength={3}
filter='contains'
onChange={this.handleLangChange} />
</div>
);
}
});
Ce dont j'ai besoin, c'est de récupérer la valeur sélectionnée par l'utilisateur dans le composant parent. J'obtiens cette erreur :
Uncaught TypeError: this.props.onSelectLanguage is not a function
Quelqu'un peut-il m'aider à trouver le problème ?
P.S. Le composant enfant crée une liste déroulante à partir d'un fichier json, et j'ai besoin que la liste déroulante affiche les deux éléments du tableau json l'un à côté de l'autre (comme : "aaa,english" comme premier choix !).
{
"languages":[
[
"aaa",
"english"
],
[
"aab",
"swedish"
],
}
3 votes
<SelectLanguage onSelectLanguage={this.handleLanguage*Code*}/>
une faute de frappe.0 votes
@YuryTarabanko Merci, mais je reçois toujours la même erreur.
0 votes
@DavinTryon Comment dois-je l'ajouter ? J'ai essayé comme ça :
handleLanguageCode: function(langValue) { this.setState({ language: langValue }).bind(this); },
Mais il renvoie une erreur :ncaught TypeError: Cannot read property 'bind' of undefined
2 votes
@DavinTryon
createClass
autobinds des méthodes non réactives.0 votes
@OP pourriez-vous créer un fiddle démontrant le problème ?
0 votes
Duplicata possible de Comment passer les props à {this.props.children} ?
0 votes
Mais est-il valide de passer des données de l'enfant au parent ? D'après ce que j'ai compris, les données doivent être transmises uniquement du Parent à l'Enfant, n'est-ce pas ?