我为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
然后重新加载我的模拟器。
答案 0 :(得分:2)
export const getSome = (image, callback) => (
colorGrabber.getColors(image, callback)
)
您现在应该可以使用import { getSome } from '../filepath'