首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >requireNativeComponent在UIManager中没有发现

requireNativeComponent在UIManager中没有发现
EN

Stack Overflow用户
提问于 2022-09-04 06:37:13
回答 1查看 169关注 0票数 1

我知道这个问题已经问过很多次了,但所有的问题都涉及到在react-native应用程序中集成第三方依赖关系,但在我的例子中,这是因为我自己的本机代码,我对如何修复它有问题。我使用的是react-native 0.69。

这是我的代码片段。在CealScanQrViewManager.kt中:

代码语言:javascript
运行
复制
class CealScanQrViewManager(
    private val reactContext: ReactApplicationContext
) : ViewGroupManager<FrameLayout>() {
    private val cealScanQrView = "CealScanQrView"

    // ...

    override fun getName() = cealScanQrView

    // ...
}

在JS方面,我创建了一个CealScanQrViewManager.tsx文件:

代码语言:javascript
运行
复制
import {requireNativeComponent} from 'react-native';

export const CealScanQrViewManager = requireNativeComponent(
  'CealScanQrViewManager',
);

在App.tsx中:

代码语言:javascript
运行
复制
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中没有发现

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-07 06:18:53

本地组件官方指南让您注册一个视图管理器,它是一个重写getName以返回一个固定字符串的类,然后将相同的字符串传递给requireNativeComponent

在您的代码中,这些名称不匹配。你requireNativeComponent('CealScanQrViewManager'),但是"CealScanQrView"。正如官方指南所解释的,

getName返回的名称用于从JavaScript引用本机视图类型。

如果名称不匹配,难怪查找类型失败。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73597264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档