#49964·expo

[expo-modules-core][Android] ExpoComposeView 的 generateViewId() 与 react-native-screens 的 tab 容器 ID 发生冲突,在切换 tab 时崩溃

作者: b2x-software创建于 2026年9月10日更新于 2026年9月17日
标签📦 expo-modules-coreneeds review📦 expo-routercontributor: externalsdk-57severity: medium

| Writer | 分配的范围 | | 渲染器 - ViewManager.setId(reactTag); Fabric 计数 nextReactTag = 2; += 2 | 偶数,从 2 开始 | | react-native-screens - NewArchAwareViewIdGenerator,用于标签片段容器 | 奇数,从 3 开始 | | expo-modules-core - ExpoComposeView 调用 View.generateViewId() | 每个整数,从 1 开始 |

第二个写入器仅存在于第一个写入器中:屏幕使用奇数,以便永远不会落入 React 标签,其自己的 ViewIdHelpers.kt 表示该方案"依赖于内部渲染器行为…因此必须重新审视并保持与当前 RN 行为一致。" View.generateViewId() 计数 1、2、3、4 - 每个整数 - 因此它沿着屏幕使用的数字行进。