Ich versuche derzeit zu lernen reagieren durch den Bau einer einfachen App, die mit einem JSON-Array durch den Aufruf einer bestimmten API funktioniert. Ich würde dann gerne die Ergebnisse des Arrays in einem Listenelement anzeigen und wenn man auf eines der Listenelemente klickt, gibt es einen Parameter zurück und ruft eine API auf und zeigt Daten in einem anderen Teil der Seite an. Ich habe die API erfolgreich aufgerufen und zeige die korrekten Daten im Listeneintrag an, aber ich habe Mühe herauszufinden, wie die Daten nach dem Klick in einem anderen Teil der Seite angezeigt werden. So haben diese ich derzeit in meiner Seite:reagieren js Anzeige von AJAX-Daten auf Funktionsaufruf durch Übergabe Parameter
<div class="col-lg-3 col-md-3">
<div class="block-job-list" id="JobCardBlock"></div>
</div>
<div class="col-lg-9 col-md-9">
<div class="block-job-list" id="JobDetailBlock"></div>
</div>
<script type="text/jsx">
var JobCard = React.createClass({
// get game info
loadGameData: function() {
document.getElementById("overlay").style.display = "block";
var a_token = window.localStorage.getItem('access_token');
$.ajax({
type: 'GET',
url: this.props.source,
data: {
page: 1,
},
dataType: "json",
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", "Bearer " + a_token);
},
success: function(data) {
$('#overlay').hide();
this.setState({
data: data.order_list.data
});
}.bind(this),
error: function(xhr, status, err) {
$('#overlay').hide();
console.error('#GET Error', status, err.toString());
}.bind(this)
});
},
getInitialState: function() {
return {
data: []
}
},
componentDidMount: function() {
this.loadGameData();
},
render: function() {
return (< div className = "CurrentGame" >
< JobList data = {
this.state.data
}
/> < /div>
);
}
});
var JobList = React.createClass({
displayData: function(e) {
var a_token = window.localStorage.getItem('access_token');
$.ajax({
type: 'POST',
url: 'http://zipship-beta.herokuapp.com/job_detail',
data: {
order_id: e,
},
dataType: "json",
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", "Bearer " + a_token);
},
success: function(data) {
$('#overlay').hide();
this.setState({
data: data.order_list
});
console.log(this.state.data);
}.bind(this),
error: function(xhr, status, err) {
$('#overlay').hide();
console.error('#GET Error', status, err.toString());
}.bind(this)
});
},
render: function() {
if (!this.props.data) {
return null;
}
return (
<ul className="list-group">
{
this.props.data.map(function(jobDetail, i) {
return <li className="list-group-item" key=jobDetail.id} onClick={()=>{this.displayData(jobDetail.id)}}>
</div>
</li>
},this)
}
</ul>
);
}
});
</script>
Wenn ich auf list-item klicke, übergibt es einen Parameter und ich muss einen neuen Ajax-Aufruf machen und Daten in einem anderen Abschnitt der Seite – sameer
anzeigen Bitte helfen Sie mir, diese Arbeit zu erledigen. – sameer
React-Komponenten sind voneinander durch Design entkoppelt. Um einen Klick zu koordinieren, der Daten in einem anderen Teil der Seite anzeigt, müssen Sie einige Arbeiten ausführen, um eine Komponentenhierarchie einzurichten, mit der Sie die von Ihnen zurückgegebenen Daten weitergeben können API zu einer Kind-Komponente oder, wenn die Dinge wirklich komplex werden, in den Fluss schauen – markthethomas