【react-native-inspector】全网唯一开源 react-native 点击组件跳转到编辑器

react native 也能实现点击组件跳转到编辑器了

仓库地址: github.com/winchesHe/r...

效果演示

对于不想花 20 刀一个月买 random-ide 的有福了(我也不想花钱)

用法

一个用于 React Native/Expo 开发阶段的 Inspector 辅助工具:

  • Babel 插件会在 development 环境为组件注入 __inspectorSource 属性,便于在调试器或自定义逻辑中定位到源码位置。
  • Metro 中间件集成了打开编辑器的能力(基于 launch-editor),通过 Dev Server 请求快速在本地编辑器中打开对应文件。

babel.config.js

将插件按需注入,仅在 development 环境生效:

js 复制代码
module.exports = function (api) {
  const env = api.env();
  return {
    presets: ['babel-preset-expo'],
    plugins: [
      env === 'development'
        ? [
          require.resolve('react-native-components-inspector/babel/injectInspectorSource'),
          { propName: '__inspectorSource' },
        ]
        : void 0,
    ].filter(Boolean),
  };
};

metro.config.js

为 Metro Dev Server 增强中间件以支持在编辑器中打开文件:

js 复制代码
const { launchEditorMiddleware } = require('react-native-components-inspector/scripts/launchEditorMiddleware');

module.exports = (() => {
  // Attach custom middleware for opening files in editor
  config.server = {
    ...config.server,
    enhanceMiddleware: (middleware) => {
      const launchMw = launchEditorMiddleware();
      return (req, res, next) => launchMw(req, res, () => middleware(req, res, next));
    },
  };

  return config;
})();

提示:上述片段展示了核心接入点;请按你的项目实际导入/获取 configlaunchEditorMiddleware 的方式完成接入。

根组件包裹 InspectorWrapper(App.tsx)

在应用入口处,用 InspectorWrapper 包裹你的根组件,建议仅在开发环境启用:

tsx 复制代码
import React from 'react';
import { InspectorWrapper } from 'react-native-components-inspector/src/components/InspectorWrapper';
import { Root } from './src/Root';

export default function App() {
  const Wrapper: React.ComponentType<any> = __DEV__ ? InspectorWrapper : React.Fragment;
  return (
    <Wrapper>
      <Root />
    </Wrapper>
  );
}

如果你的项目使用不同的入口(例如 index.js / index.tsx 或 Expo Router 的 app/_layout.tsx),请在相应的根布局处按同样方式包裹。

相关推荐
qq_17776737几秒前
React Native鸿蒙跨平台数据使用监控应用技术,通过setInterval每5秒更新一次数据使用情况和套餐使用情况,模拟了真实应用中的数据监控场景
开发语言·前端·javascript·react native·react.js·ecmascript·harmonyos
烬头88213 分钟前
React Native鸿蒙跨平台应用实现了onCategoryPress等核心函数,用于处理用户交互和状态更新,通过计算已支出和剩余预算
前端·javascript·react native·react.js·ecmascript·交互·harmonyos
2601_949593652 小时前
基础入门 React Native 鸿蒙跨平台开发:卡片组件
react native·react.js·harmonyos
天人合一peng2 小时前
Unity中button 和toggle监听事件函数有无参数
前端·unity·游戏引擎
方也_arkling3 小时前
别名路径联想提示。@/统一文件路径的配置
前端·javascript
毕设源码-朱学姐3 小时前
【开题答辩全过程】以 基于web教师继续教育系统的设计与实现为例,包含答辩的问题和答案
前端
qq_177767373 小时前
React Native鸿蒙跨平台剧集管理应用实现,包含主应用组件、剧集列表、分类筛选、搜索排序等功能模块
javascript·react native·react.js·交互·harmonyos
qq_177767374 小时前
React Native鸿蒙跨平台自定义复选框组件,通过样式数组实现选中/未选中状态的样式切换,使用链式调用替代样式数组,实现状态驱动的样式变化
javascript·react native·react.js·架构·ecmascript·harmonyos·媒体
web打印社区4 小时前
web-print-pdf:突破浏览器限制,实现专业级Web静默打印
前端·javascript·vue.js·electron·html
RFCEO4 小时前
前端编程 课程十三、:CSS核心基础1:CSS选择器
前端·css·css基础选择器详细教程·css类选择器使用方法·css类选择器命名规范·css后代选择器·精准选中嵌套元素