Skip to content

feat(rn): 支持自定义组件可通过 createSelectorQuery 获取引用对象#2491

Open
dos1in wants to merge 3 commits into
didi:masterfrom
dos1in:feat/add-custom-component-ref
Open

feat(rn): 支持自定义组件可通过 createSelectorQuery 获取引用对象#2491
dos1in wants to merge 3 commits into
didi:masterfrom
dos1in:feat/add-custom-component-ref

Conversation

@dos1in
Copy link
Copy Markdown
Member

@dos1in dos1in commented May 14, 2026

本次改动让 RN SelectorQuery.select 同时查询 node 和 component 类型 ref,并让自定义组件实例暴露其非 virtualHost 场景下的 host 根节点,供现有 NodeRef 测量流程复用。

改动点:

  1. packages/api-proxy/src/platform/api/create-selector-query/rnSelectQuery.js

  • 将 select(selector) 的 ref 查询范围从 node 扩展为 ['node', 'component']。
  • 基础节点仍走原有 node ref,自定义组件可命中 component ref。
  1. packages/core/src/platform/builtInMixins/refsMixin.ios.js

  • __selectRef 支持传入多个 ref type。
  • 扩展 type 过滤条件。
  1. packages/core/src/platform/patch/getDefaultOptions.ios.js

  • 为 RN 自定义组件实例保存内部 host 根节点 ref。
  • 组件 render 出来的 root 节点带 ishost 时,将 hostRef 挂到该节点。
  • 组件实例新增 __getNodeInstance(),把自定义组件转成可被 NodeRef 消费的节点实例。
  1. packages/api-proxy/src/platform/api/create-selector-query/rnNodesRef.js

  • NodeRef 兼容 getNodeInstance 和自定义组件实例上的 __getNodeInstance。

另外更新了测试用例和对应的 skills 说明。

@dos1in dos1in changed the title feat(RN): 支持自定义组件可通过 createSelectorQuery 获取引用对象 feat(rn): 支持自定义组件可通过 createSelectorQuery 获取引用对象 May 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant