如何通过从React Native中的字符串引用其值来访问对象?

时间:2017-12-27 05:14:49

标签: javascript react-native

我想要做的是,我有一个文件说permissions.js,内容为:

Permissions.js

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

和另一个文件functions.js

functions.js

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

并导入school.js中的两个文件:

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

所以我想要做的是使用service变量作为StudentServicefunctions.js的参考。不能使用require。

1 个答案:

答案 0 :(得分:4)

这并不是特定于react-native,只是现代JS模块。这将有效:

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

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

更好的方法是:

<强> 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
  }
}

然后你永远不必乱用字符串来引用事物。