2017-12-27 4 views
0

was genau will ich tun ist, ich habe eine Datei sagen permissions.js mit Inhalt:Wie kann man auf ein Objekt zugreifen, indem man seinen Wert von einer Zeichenkette in "React Native" referenziert?

Permissions.js

module..exports = { 
    Student: { 
    Read: true, 
    Service: "StudentService", 
    Teach: false 
    }, 
    Teacher: { 
    Read: false, 
    Service: "TeacherService", 
    Teach: true 
    } 
} 

und eine andere Datei functions.js:

functions.js

// functions.js 
module.exports = { 
    StudentService: { 
    someFunc1: function() {...}, 
    someFunc2: function() {...}, 
    someFunc3: function() {...} 
    }, 
    TeacherService: { 
    someFunc1: function() {...}, 
    someFunc2: function() {...}, 
    someFunc3: function() {...} 
    } 
} 

und sowohl die Dateien in school.js importieren:

school.js

// school.js 
import functions from "./path-to/functions.js"; 
import { Student, Teacher } from "./path-to/permissions.js"; 

// Making it very simple 
let service = Student.Service; // service = "StudentService" 
service.someFunc1() // returns someFunc1 is not a function 

Also, was ich will zu tun ist, verwenden Sie die service Variable als Referenz für die StudentService in functions.js. Kann nicht erfordern.

Antwort

4

Dies ist nicht spezifisch für reaktionsnative überhaupt, nur moderne JS-Module. Dies funktioniert:

perissions.js

import { StudentService, TeacherService } from "./path-to/functions.js"; 

module.exports = { 
    Student: { 
    Read: true, 
    Service: StudentService, 
    Teach: false 
    }, 
    Teacher: { 
    Read: false, 
    Service: TeacherService, 
    Teach: true 
    } 
} 

Und dann haben Sie nie zu verwirren über Dinge, mit Streichern Referenzierung:

import * as functions from "./path-to/functions.js" 
import { Student } from "./path-to/permissions.js" 

let service = Student.Service; 
functions[service].someFunc1 

Ein besserer Ansatz, obwohl dies sein würde.

Verwandte Themen