2016-08-04 9 views
0

Mein Code ist wie so angeordnet:Mit React eine Variable aus mehreren Dateien aufrufen?

main.jsx

var React = require('react'); 
var ReactDOM = require('react-dom'); 
var Console = require('./console.jsx'); 
var Dashboard = require('./dashboard.jsx'); 

var datastored = new Dexie('Notes'); 
datastored.version(1).stores({entries:'++id, title, entry' }); 
datastored.open().catch(function(err){alert("Could not open database:"+err)}); 

Diese main.jsx bootet meine Datenbank über die datastored Variable, die die IndexDB Dexie.js Wrapper verwendet. Jetzt möchte ich die datastored Variable von meinen anderen Dateien (wie console.jsx oder dashboard.jsx) aufrufen. In meinem speziellen Fall habe ich einen <Addnote/> innerhalb <Dashboard/>. Inside <Addnote/> Ich habe diese Funktion.

addnote.jsx

sendthru:function(){ 
    var newInput = { 
    title: this.inputTitle.value, 
    entry: this.inputEntry.value  
    }; 
    datastored.entries.add(newInput).then(()=>this.runcheck()); 
    this.inputTitle.value = ''; 
    this.inputEntry.value = '';  
},  

Wenn sendthru gestartet wird, jedoch heißt es meine Konsole Fehler, dass datastored is not defined. Also frage ich mich, wie ich meine gesamte App aktivieren würde, Anrufe an die Variable datastored zu machen.

Antwort

2

Sie könnten Ihre Daten in einem anderen Modul speichern. Module sind Singletons, also könnten Sie Ihre eigene Datei erstellen (zB storage.js) und darin ein Objekt mit Feldern exportieren, die Sie dem Rest Ihres Codes zur Verfügung stellen möchten. Dann, wenn Sie require('./storage') haben, haben Sie Zugriff auf dieselben Daten überall sonst.

+0

Also nehme ich an 'main.jsx' das würde aussehen wie' var datastored = require ('./ storage.js') '? Und dann auf storage.js, die wie folgt aussehen würde: module.exports = new Dexie ('Notes'); '? –

+0

Sicher könnten Sie so starten und ändern, wenn Sie mehr Daten benötigen – John

Verwandte Themen