Ich bin sehr neu zu Reagieren js und ich versuche, etwas sehr einfaches zu tun, wenn ein Benutzer in den Text eingibt den Text in der Das p-Tag oben sollte sich ändern, während der Benutzer tippt. Hier ist der relevante Code:this.props scheint undefined zu sein und ich kann nicht herausfinden, warum
index.js
import { render } from 'react-dom'
import App from './components/App'
var Name = React.createClass({
getInitialState: function() {
return {name: ''}
},
changeName: function(event) {
this.setState({
name: event.target.value
});
},
render: function() {
return (
<div>
<p>Your name is: {this.state.name}</p>
<App setName={this.changeName} />
</div>
)
}
});
render((<Name />), document.getElementById('content'));
App.js Import Stil von‘../style/base.scss';
export default function() {
return (
<div>
<input type="text" placeholder="Enter text!" className="fancy" onChange={this.props.setName} />
</div>
);
}
Ich dachte, das würde funktionieren, aber stattdessen wird nichts auf der Seite gerendert. Wenn ich die Konsole im Browser überprüfe, sagt es mir: "Uncaught TypeError: Kann die Eigenschaft 'Requisiten' von undefined nicht lesen". Das muss bedeuten, dass das "dieses" Objekt nicht definiert ist, aber ich kann mir keinen Grund dafür vorstellen. Ich habe die ES6-Klassensyntax nicht verwendet, daher dachte ich, dass "das" gut funktionieren würde. Kann mir jemand sagen, was los ist? Vielen Dank im Voraus für jeden, der sich das ansehen möchte.
Vielen Dank ! Ich wusste das eigentlich nicht, aber wie empfehlen Sie mir, das App.js Props-Objekt zu übergeben? Ich muss es von meinem index.js aus machen, vielleicht bin ich hier dumm, aber was könnte ich tun? Vielen Dank! – ParadoxicalEnigma
Sie übergeben die App-Komponente bereits die 'setName' -Eigenschaft, indem Sie Folgendes tun:' 'Das einzige Problem war, dass Sie die Props in App.js nicht akzeptierten, weil Sie eine leere Parameterliste für Ihre funktionale Komponente. Sie müssen einen Parameter hinzufügen, der dann die Requisiten enthält, die Sie bereits übergeben haben. –
John
Oh wow ... Ok ja, du hattest vollkommen Recht, ich kann nicht glauben, dass ich das nicht gesehen habe. Vielen Dank Alter. – ParadoxicalEnigma