2016-11-02 8 views
5

Ich habe eine lokale JSON-Datei zu speichern, die für das Laden aller Daten zu App verwendet wird. In einer Komponente lade ich diese Daten constructor() ein. In Funktion addRow() füge ich neues Feld hinzu, aber es ist nur in der lokalen Statusvariablen. Ich möchte es auch zu JSON-Datei hinzufügen, also nach der Aktualisierung wird diese neue Zeile immer noch hier sein.Wie neuen Zustand zu lokalem json

Ich habe versucht, wie das geht einfach gelöst, aber ich fand es nicht. Wenn Sie etwas über ein Thema wissen, senden Sie es mir.

+0

POST-Anfrage + serverseitiges Skript zum Schreiben in die JSON-Datei. – dfsq

+0

Oder einige Javascript (Node.js) Plugin für reagieren, die mit JSON arbeiten können – Mardzis

+0

Nein, Sie können nicht Dateien mit nur Client-Side-Code schreiben, müssen Sie Backend dafür. – dfsq

Antwort

3

Sie können aus Sicherheitsgründen nicht vom Browser auf das Dateisystem zugreifen. Wenn Sie nur nach dem Aktualisieren darauf zugreifen möchten, können Sie es in localStorage speichern, wenn Sie den Status ändern und dann verwenden, wenn die Komponente geladen wird, wenn sie nicht definiert ist (Sie können dies in componentDidMount überprüfen). (Der folgende Code ist nicht getestet)

addEmployee(employee) { 
    let newEmployees = this.state.employees.concat([employee]) 
    localStorage.setItem('employees', JSON.stringify(newEmployees)); 
    this.setState({ 
     employees: newEmployees 
    }); 
} 


componentDidMount(){ 
    let newEmployees = localStorage.employees 
    if(newEmployees != undefined){ 
     this.setState({ 
      employees: JSON.parse(newEmployees) 
     }); 
    } 
} 

Wenn Sie das JSON beharrlich speichern wollen, und Sie wollen mehr als in der Lage sein es nach erfrischend zu verwenden, sollten Sie es auf das Backend tun. Sie können den Benutzer auch manuell die Datei speichern lassen (mit einer Download-Aufforderung), wie es beschrieben wird here.

+0

Shoudnot 'if (localStorage.employees! = Undefined) {' statt 'Mitarbeiter' – Mardzis

+0

Plus beim Hinzufügen gibt mir einen Fehler' Uncaught TypeError: JSON.stringfy ist keine Funktion (...) '. Muss ich eine Bibliothek dafür importieren? Ich dachte, es ist eine eingebaute Funktion. – Mardzis

+0

omg gibt es nur ein Tippfehler, lol – Mardzis

0

Es gibt keine Möglichkeit, dies über den Client/Browser zu tun, da sie keinen Zugriff auf das Dateisystem haben (Formularsicherheitsüberlegungen). Du wirst es im Backend machen.

Verwandte Themen