react 使用 antd 的 tree组件 defaultExpandAllRows 无法默认展开?

本文探讨了在前端开发中遇到的表格、下拉树及选择树默认展开失效的问题。作者提出解决方案,即通过添加&&运算符确保在数据变更后正确渲染表格,从而实现初始化时的树形结构展开。这个技巧对于优化前端界面交互和提升用户体验具有重要意义。
React使用 Ant Design 的 Tree 组件并想要在加载完节点后立即获取第一个子节点的数据,你需要在 `onLoad` 回调函数中返回一个 Promise。这个 Promise 应该在节点的数据准备好时解析,传递给父组件所需的子节点信息。当你首次渲染树的时候,由于数据尚未加载,`onLoad` 可能不会立即触发。因此,在第一次加载整个树或者手动触发某个节点加载时,你应当确保先加载第一个节点。 下面是一个示例代码片段,展示了如何实现这一需求: ```jsx import { Tree, LoadDataParams } from 'antd'; // 假设 data 是你的 tree 数据,包含一个特殊的 key "firstChild" 来标识第一个子节点 const [treeData, setTreeData] = useState<any[]>([]); // 储存当前的 tree 数据 const onLoad = async ({ node }: LoadDataParams): Promise<void | any> => { if (!node || !node.key === 'firstChild') return; // 如果是第一个节点 const firstChildData = await fetchDataForFirstChild(node); // 异步获取第一个子节点数据 setTreeNodeData(node, firstChildData); // 更新数据到 treeData }; const fetchDataForFirstChild = (node) => { // 这里应该根据实际情况替换为从服务器或其他地方获取数据的逻辑 // 示例:假设我们有一个 API 能够获取节点的第一子节点数据 return new Promise((resolve) => { setTimeout(() => { resolve({ ...data[node.children[0]], // 假设 data 存储了所有节点的信息 }); }, 1000); // 模拟异步请求 }); }; <Tree loadData={onLoad} defaultExpandedKeys={['firstChild']} // 显示第一个节点并触发加载 data={treeData} /> ``` 在这个例子中,`defaultExpandedKeys` 设置为 'firstChild',这意味着第一个节点会默认展开并且触发 `onLoad`。一旦数据准备就绪,`setTreeNodeData` 函数会被调用更新节点的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

归来巨星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值