ReactJS so fügen Sie eine Karte mehr/weniger Taste
Ich bin neu, zu Reagieren und zu möchte ich hinzufügen, dass ein einfaches "mehr Anzeigen" - button in meiner Anwendung. Ich habe ein array mit Daten, wo ich will, um zu zeigen, 3 Einträge als Vorgabe. Wenn ein Benutzer klickt auf show more
, der rest der Daten dargestellt werden soll, und die Schaltfläche sollte den text ändern in show less
. Ich bin mir nicht genau sicher, wie es zu tun.
Dies ist, was ich so weit gekommen:
class Application extends React.Component {
constructor() {
super()
this.cars = [
{ "name" : "Audi", "country" : "Germany"},
{ "name" : "BMW", "country" : "Germany" },
{ "name" : "Chevrolet", "country" : "USA" },
{ "name" : "Citroen", "country" : "France" },
{ "name" : "Hyundai", "country" : "South Korea" },
{ "name" : "Mercedes-Benz", "country" : "Germany" },
{ "name" : "Renault", "country" : "France" },
{ "name" : "Seat", "country" : "Spain" },
]
this.isLoaded = false
}
showMore() {
//show more entries
//switch to "show less"
}
render() {
return <div className="container">
<h3>Click show more to see more data</h3>
<div className="row">
<h3>List of Cars</h3>
<ul>
{this.cars.slice(0,3).map((car, i) => <li key={i}>{car.name} - {car.country}</li>)}
</ul>
</div>
<p>
<a className="btn btn-primary" onClick={this.showMore()}>Show more</a>.
</p>
</div>;
}
}
React.render(<Application />, document.getElementById('app'));
Hier ist ein JSBin mit dem code in Aktion
Kann mir jemand helfen?
- isLoaded sollte in Ihrem Bundesland. Aktualisieren Sie Ihr rendering, rufen Sie setState. Sie hätten einen "Staat.itemNumber", dass Sie das update auf die Länge, wenn Sie anrufen showMore. In Ihrem JSX, slice (0, Zustand.itemNumber) und du bist gut
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine Lösung. JSBin hier
Erste, alle Ihre Daten der Komponente in seine
state
.Verwenden wir
itemsToShow
zu wissen, wie viele Elemente zu zeigen, wenn nicht erweitert werden. Wir können eineexpanded
variable zu ändern, die Taste text auf der Grundlage der Aktion durch den Benutzer. Wir sind auch dann verbindlichshowMore
auf diese Komponente, so dass die Taste weiß, von welcher Komponente die Methode aufrufen, wenn darauf geklickt wird.In unserem erbringen, lassen Sie uns ein paar Dinge ändern, wie so
Wir gehen zum Rendern von 0 bis jedoch viele
itemsToShow
wir haben. Dann ändern wir die button-text je nachexpanded
Wert wie soSchließlich schreiben wir die
showMore
Methode, tatsächlich ändert sich der Wert vonitemsToShow
.Du einiges falsch machen. Sie müssen verstehen, was ein Staat ist und wie Sie reagieren, mit ihm interagieren. Wenn ein Staat sich ändern, Ihre render-Funktion wird erneut aufgerufen, es Ihnen ermöglichen, dynamische rendering basierend auf Ihren aktuellen Status.
Ersten initialisieren Sie Ihren Zustand mit, was Sie wollen (hier, ich hätte nur rowsToDisplay, aber ich denke, Sie wollen in der Lage sein, um aktualisieren Sie Ihre Autos auch).
Sollten Sie binden Sie diese auf Ihre Funktion showMore so, wenn es aufgerufen wird, es zu bekommen, dass "diese" bezieht sich auf die Komponente.
OnClick, showMore aufgerufen wird; die Funktion aktualisieren Sie Ihren Status. Durch die Aktualisierung ist es, das Rendern wird wieder aufgerufen werden (erinnern Sie sich, dass eine änderung in Ihrem Zustand zu nennen, Rendern Sie erneut mit Ihrem neuen Werten). Dies sollte der einzige Weg für Sie, um die Ansicht zu aktualisieren.
Fühlen Sie sich frei, Fragen zu stellen, aber bitte Lesen Sie den doc zuerst :
https://facebook.github.io/react/docs/state-and-lifecycle.html
JS:
HTML:
verwenden Sie dieses.setState() ihn neu zu Rendern der Komponente!