2017-10-27 12 views
1

Ich versuche den Weg zu finden, den Warnhinweis zum ersten Mal anzuzeigen, wenn der Benutzer auf die Seite gelangt. Wenn der Benutzer dann erneut auf diese Seite klickt, wird dieser Alarm nicht mehr angezeigt.So legen Sie die Entlassungswarnung so fest, dass sie nur einmal angezeigt wird

Ich verwende den Code von dieser Website: https://reactstrap.github.io/components/alerts/

mein Code:

this.state = { 

    hasVisitedPageBefore: false, 
}; 

    visitPage() { 
this.setState({ hasVisitedPageBefore: true }); 

} 

showAlert() { 
return (
    <Alert color="info" isOpen={this.state.visible} toggle={this.onDismiss}> 
    Congratulations! You have been created deck. 
    </Alert> 
); 
    } 


render 
{this.state.hasVisitedPageBefore ? null : showAlert} 

Haben Sie Jungs wissen, wie es zu überprüfen? Bitte schlage mich vor.

Danke

+0

Sie irgendeine Art von Kennung hinzufügen, Klasse zum Beispiel, um anzuzeigen, dass diese Warnung nicht angezeigt werden soll, und entfernen Sie, wenn Sie es noch einmal zeigen wollen in der Zukunft. –

+0

@ShaharGalukman Ich versuche, den Status für den Alarm festzulegen, aber es funktioniert immer noch nicht. Wenn ich auf diese Seite klicke, wird der Alarm immer noch angezeigt – ppppp

+0

können Sie Ihren Code anzeigen? – digit

Antwort

0

Sie könnten Hilfe von localstorage nehmen Fahnen zwischen verschiedenen Seiten

Eg bestehen bleiben. Starten Sie in construcor

constructor() { 
this.state = { 
    hasVisitedPageBefore: localStorage.get("hasVisited") || false, 
}; 
} 

nun die Begegnungsflag in

gesetzt
visitPage() { 
    localStorage.set("hasVisited", true) 
    this.setState({ hasVisitedPageBefore: true }); 
} 

Sie sessionStorage verwenden können, wenn Sie diese Vorliebe für die aktuellen Browser-Sitzung anhalten soll.

[Dies ist nur eine Idee, bitte entschuldigen Sie meine Syntax]

+1

Während dies das Problem lösen wird, sieht es so aus, als ob es an diesem Punkt wichtiger ist, dass @pppp versteht, wie man react state korrekt verwendet. – anand

+0

@anand Danke. Es ist Arbeit! – ppppp

+0

@Abhilash Nayak Es funktioniert gut. Vielen Dank – ppppp

0

Wenn ich Sie richtig verstehe, Sie wollen „erinnern“, dass ein Benutzer eine bestimmte Seite, so dass, wenn der Benutzer besucht wieder, Sie auf eine andere Art und Weise zu zeigen, haben Sie Ihre Seite (dh besucht ohne die Warnung).

Sie müssen eine Statusvariable haben hasVisitedPageBefore (oder was auch immer Sie wählen, um es zu nennen!). Legen Sie beim Starten der App den Standardwert false fest. Wenn die Seite besucht wird, setzen Sie die Variable auf true.

Dann zeigen oder verstecken Sie auf Ihrer Seite den Alarm basierend darauf, ob hasVisitedPageBeforetrue oder false ist.

<div> 
     {hasVisitedPageBefore?null:<Alert>Message</Alert>} 
     <MyPage /> 
    </div> 

Fühlen Sie sich frei zu fragen, wenn Sie Probleme haben, die Details herauszufinden.

+0

immer noch nicht arbeiten, wenn ich zurück auf die Seite, es ist bis erscheinen. – ppppp

+0

Wo speichern Sie Ihren Status? Wenn Sie es auf der gleichen Seite speichern, wird es zerstört, wenn Sie weggehen und wird den Standardwert haben, wenn Sie zurückkommen. Zeigen Sie etwas von Ihrem Code, und jemand kann vielleicht helfen. – anand

+0

Sah deinen Code. Sie speichern den Status in derselben Komponente wie Ihre Seite. Es wird verloren gehen, wenn Sie auf eine andere Seite gehen.Speichern Sie den Status in einer übergeordneten Komponente und übergeben Sie ihn als "prop" an Ihre Seite. – anand

Verwandte Themen