用途:为 MetaMask Mobile 编写和维护 Redux selector。当需要实现、添加、创建、更新、修改或重构 selector,或涉及 useSelector、createSelector、createDeepEqualSelector、reselect、app/selectors、backgroundState 的问题时使用。版本开关类选择器(validatedVersionGatedFeatureFlag、selectRemoteFeatureFlags、app/selectors/featureFlagController/)归入 feature-flags;对已有 selector 的记忆化审计(identity 失效、级联重渲染)归入 performance。
主要能力与工作流:先回答问答类问题后停止;实现或更新时,先搜索是否已存在同名 selector,再新增。新 selector 放在 app/selectors/<feature>.ts(或该功能的 selectors/ 文件夹)。先添加读取 controller slice 的叶子输入选择器,再在其上组合派生选择器。将输入收窄到最小 slice,并按输出类型选型:基本类型输出用 createSelector,对象/数组且收窄后输入仍会抖动、载荷小到可比较时用 createDeepEqualSelector。命名采用 select<Feature><Thing>。在组件和 hook 中以 useSelector(selectX) 调用该具名选择器。为每个选择器补充就近的单元测试,至少包含两种 state 变体。
限制:上述为资料给出的步骤,未提供具体代码示例、依赖版本和其他约束;缺失信息暂未提供。