对于react-native中的导入/导出,我不了解什么?

时间:2017-01-06 23:37:58

标签: javascript react-native

我为android创建了一个本机模块库,并尝试合并到具有类似iOS功能的现有项目中。 API有点不同,我对Objective-C不好,所以在index.js中我想调用iOS函数,在javascript中拦截回调,将结果按到我的新API中,然后调用原始回调。现在我想为新的API调用使用不同的名称而不是iOS本机模块中定义的名称(colorGrabber.getColors)所以我定义了一个函数getSome

我尝试了很多不同导出表达式和导入表达式的组合,但我总是会遇到错误,例如_reactNativeColorGrabber2.default.getSome is not a function( is not a function. (In '(0,_reactNativeColorGrabber2.default)','(' is an instance of Object)

我不清楚这些消息是什么意思。因此,在一个无能为力的黑客的风格,我试图复制其他人做的事情。在react-native-image-picker,他们有类似的东西。他们说:

module.exports = {
  ...ImagePickerManager,
  showImagePicker: function showImagePicker(options, callback) {
    if (typeof options === 'function') {
      callback = options;
      options = {};
    }
    return ImagePickerManager.showImagePicker({...DEFAULT_OPTIONS, ...options}, callback)
  }
}

它适用于他们。但是,当我尝试非常相似的东西时:

module.exports = {
  getSome: function getSome(image, callback) {
    return colorGrabber.getColors(image, callback);
  }
}

错误消息表示未定义该功能。我也尝试过不同形式的ES6风格的导出语句。

在消费组件中,我尝试了import colorGrabber from 'react-native-color-grabber';(它给出了我上面提到的第一个错误消息)和import getSome from 'react-native-color-grabber';,它们给出了第二个。

显然,我不明白导入和导出的基本内容。

线索,有人吗?

更新:似乎我的大部分实验都被打包器缓存挫败了 - 这可能就是我无法让事情发挥作用的原因。很多时候,当我改变某些东西时,它会非常令人费解,因为结果不会改变。似乎打包器可能忽略node_modules中的更改。我现在取得了成功,如果我每次在index.js中做出改变,我都会杀死打包器并执行rm -fr $TMPDIR/react-* && npm start然后重新加载我的模拟器。

1 个答案:

答案 0 :(得分:2)

export const getSome = (image, callback) => (
    colorGrabber.getColors(image, callback)
  )

您现在应该可以使用import { getSome } from '../filepath'

导入它