--- title: 嵌套上下文与稳定标识 description: 组合局部记录上下文,并为记录列表选择稳定的 React key。 order: 20 toc: - id: nested-records title: 嵌套记录 - id: optional-provider title: 可选 Provider - id: stable-keys title: 稳定标识 --- ## 嵌套记录 {#nested-records} Provider 可以嵌套。内层字段读取局部记录,离开内层边界后恢复外层记录。 ```tsx ``` 不要把记录上下文当作可变 Store。新数据到达时,把新的记录引用传给 Provider;需要编辑的字段交给表单或其他状态层管理。 ## 可选 Provider {#optional-provider} `OptionalRecordProvider` 只在 `value` 不是 `undefined` 或 `null` 时创建新边界。值为空时,它保留最近的父级记录;`0`、`false` 和空字符串仍会创建新边界。这适合既能接收 prop、又能嵌入现有记录界面的组件。 ```tsx function ProductCard({ product }: { product?: Product }) { return ( ) } ``` ## 稳定标识 {#stable-keys} `RecordsIterator` 会直接使用字符串、数字或 bigint 记录作为 key;对于对象记录,它默认读取 `id`。其他值或没有 `id` 的对象可通过回调提供 `recordKey`,对象也可以提供字段名。只有未获得有效标识时才会回退到数组下标。 ```tsx } recordKey="code" /> `${revision.documentId}:${revision.version}`} > ```