2016-11-02 22 views
5

Tüm verileri uygulamaya yüklemek için kullanılan yerel bir JSON dosyasına sahibim. Tek bileşende bu veriyi constructor()'a yükleyin. addRow() işlevinde yeni alan ekliyorum, ancak yalnızca yerel durum değişkeninde. Ben de json dosyasına eklemek istiyorum, bu yüzden yeniledikten sonra bu yeni satır hala burada olacak.Yerel json'a yeni durum nasıl kaydedilir

Bunun nasıl kolay çözüldüğünü bulmaya çalışıyordum ama bulamadım. Bir konu hakkında bilginiz varsa bana gönderin. Onlar dosya sistemi (form güvenlik konuları) erişimi olmadığı için

constructor() { 
    super(); 
    this.state = { 
     employees: require('json!../../../data/employees.json') 
    }; 
    this.addEmployee = this.addEmployee.bind(this); 
} 

addEmployee(employee) { 
    this.setState({ 
     employees: this.state.employees.concat([employee]) 
    }); 
} 
+0

POST isteği + sunucu tarafı komut dosyası için json dosyasına yazılır. – dfsq

+0

Veya json – Mardzis

+0

ile çalışabilen bir javascript (node.js) eklentisi yok. Hayır, sadece istemci tarafı koduyla dosya yazamazsınız, bunun için arka tarafa ihtiyacınız var. – dfsq

cevap

3

Güvenlik nedeniyle dosya sisteminden tarayıcıya erişemezsiniz. Yenilemeden sonra yalnızca erişmek istiyorsanız, durumu değiştirdiğinizde ve daha sonra bileşen yüklenmediyse onu yükledikten sonra localStorage'a kaydedebileceğinizi tahmin ediyorum (bunu componentDidMount'ta kontrol edebilirsiniz). Bunu JSON ısrarla saklamak istiyorsanız ve ferahlatıcı sonra kullanmak mümkün olmaktan daha fazlasını isterseniz

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) 
     }); 
    } 
} 

(aşağıda kod test edilmemiştir) kullanarak, arka uçta yapmalı. Ayrıca, kullanıcının dosyayı here açıklandığı gibi elle (bir indirme istemi ile) kaydetmesine izin verebilirsiniz.

+0

Shoud olmamak 'if (localStorage.employees! = Undefined) {' yerine 'çalışanları' – Mardzis

+0

Artı eklerken bana bir hata verir 'Uncaught TypeError: JSON.stringfy işlevi (…)' değildir. Bunun için kütüphane almak zorunda mıyım? Yerleşik bir işlev olduğunu düşündüm. – Mardzis

+0

omg sadece bir yazım hatası, lol – Mardzis

0

, istemci/tarayıcıdan bunu yapmak için hiçbir yolu yoktur. Bunu arka uçta yapacaksın.