使用antd的tree组件的时候,为什么defaultSelectedKeys的值一直是空的,怎么才能做到页面渲染的时候就能默认选中子节点
使用selectedKeys
useEffect的执行是异步的,因此在初始渲染时,defaultSelectedKeys可能为空,因为treeData尚未加载完成。
不知道你这个问题是否已经解决, 如果还没有解决的话:您好!要在页面渲染时默认选中子节点,您可以通过将defaultSelectedKeys
设置为子节点的key来实现。但在您提供的代码中,默认选中子节点没有生效的原因可能是由于组件的渲染次序,可以尝试通过以下方法解决:
expandAction
来指定展开节点的行为为'click'
,这样点击父节点时也能展开。<Tree
treeData={treeData}
defaultSelectedKeys={['0-0']}
expandAction="click"
/>
useEffect
钩子,通过依赖treeData
来重新设置defaultSelectedKeys
。import { Tree } from 'antd';
import { useEffect, useState } from 'react';
const treeData = [
// your data
];
function MyTree() {
const [selectedKeys, setSelectedKeys] = useState(['0-0']);
useEffect(() => {
setSelectedKeys(['0-0']);
}, [treeData]);
return (
<Tree
treeData={treeData}
defaultSelectedKeys={selectedKeys}
/>
);
}
export default MyTree;
这样,在每次treeData
发生变化时,都会重新设置defaultSelectedKeys
的值为['0-0']
。
希望能帮到您!如果还有其他问题,请随时提问。