用法
updateNode 定位 node[config.id] === targetId 的节点,以 updater 返回的新节点替换之。它仅重建从根到目标的路径,未触及的分支保持原引用;未命中时原样返回同一棵树。
example.ts
import { Tree } from '@movk/core'
const tree = [{ id: '1', children: [{ id: '2', name: '旧' }] }]
const next = Tree.updateNode(tree, '2', ({ node }) => ({ ...node, name: '新' }))
// tree 保持不变
// next[0].children[0].name === '新'
// next[0].children[0] 是新引用,未命中的兄弟分支保持原引用
API
updateNode<T>(tree: TreeNode<T>[], targetId: string, updater: TreeTransformer<T, T>, config?: TreeConfig): TreeNode<T>[]
参数
tree
TreeNode<T>[] required
源树形结构数组。
targetId
string required
目标节点的 ID,与
config.id 指定的键名进行匹配。updater
TreeTransformer<T, T> required
节点更新函数,对命中的节点调用,返回替换后的节点。
该函数接收一个包含以下属性的
context 对象:node
TreeNode<T>
当前命中的节点。
depth
number
节点的深度(根节点为 0)。
path
TreeNode<T>[]
从根节点到当前节点的路径数组(包含当前节点)。
index
number
当前节点在其同级节点中的索引。
config
TreeConfig
用于自定义树形结构中
id, pid, children 键名的配置对象。id
string
可选。指定节点唯一标识符的键名。默认为 "id"。
pid
string
可选。指定节点父级标识符的键名。默认为 "pid"。
children
string
可选。指定子节点数组的键名。默认为 "children"。
返回值
TreeNode<T>[]
更新后的新树形结构数组;未命中时返回原树。
Changelog
No recent changes