我知道这个问题已经问过很多次了,但所有的问题都涉及到在react-native
应用程序中集成第三方依赖关系,但在我的例子中,这是因为我自己的本机代码,我对如何修复它有问题。我使用的是react-native
0.69。
这是我的代码片段。在CealScanQrViewManager.kt中:
class CealScanQrViewManager(
private val reactContext: ReactApplicationContext
) : ViewGroupManager<FrameLayout>() {
private val cealScanQrView = "CealScanQrView"
// ...
override fun getName() = cealScanQrView
// ...
}
在JS方面,我创建了一个CealScanQrViewManager.tsx文件:
import {requireNativeComponent} from 'react-native';
export const CealScanQrViewManager = requireNativeComponent(
'CealScanQrViewManager',
);
在App.tsx中:
const App = () => {
// ...
const [isCameraPermissionGranted, setIsCameraPermissionGranted] =
useState(false);
// ...
useEffect(() => {
requestCameraPermission();
}, []);
// ...
const requestCameraPermission = async () => {
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.CAMERA,
{
title: 'Cool Photo App Camera Permission',
message:
'Cool Photo App needs access to your camera ' +
'so you can take awesome pictures.',
buttonNeutral: 'Ask Me Later',
buttonNegative: 'Cancel',
buttonPositive: 'OK',
},
);
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
setIsCameraPermissionGranted(true);
} else {
console.log('Camera permission denied');
}
} catch (err) {
console.warn(err);
}
};
// ...
return (
<SafeAreaView /* ... */>
{/* ... */}
{isCameraPermissionGranted ? (
<CealScanQrViewManager
/* ... */
/>
) : (
<View style={{flex: 1, backgroundColor: 'red'}} />
)}
</SafeAreaView>
);
};
一旦我授予相机许可,我就会错误地说:
requireNativeComponent CealScanQrViewManager在UIManager中没有发现
发布于 2022-09-07 06:18:53
本地组件官方指南让您注册一个视图管理器,它是一个重写getName
以返回一个固定字符串的类,然后将相同的字符串传递给requireNativeComponent
。
在您的代码中,这些名称不匹配。你requireNativeComponent('CealScanQrViewManager')
,但是"CealScanQrView"
。正如官方指南所解释的,
getName
返回的名称用于从JavaScript引用本机视图类型。
如果名称不匹配,难怪查找类型失败。
https://stackoverflow.com/questions/73597264
复制相似问题