Reactjs 反应剑道树视图滚动到项目
我正在使用React Kendo Treeview用户界面。我想尝试滚动到树中选定的项目。我找到了许多Javascript和JQuery的示例,但没有一个是React版本的。我摆弄它解决不了这个问题 树中的项目类型为Reactjs 反应剑道树视图滚动到项目,reactjs,typescript,kendo-ui,treeview,Reactjs,Typescript,Kendo Ui,Treeview,我正在使用React Kendo Treeview用户界面。我想尝试滚动到树中选定的项目。我找到了许多Javascript和JQuery的示例,但没有一个是React版本的。我摆弄它解决不了这个问题 树中的项目类型为MyViewTreeModel。我有一个selectOntree方法,可以找到一个节点并将selected设置为true。我的问题是我想滚动到那个项目 export interface MyViewTreeModel { text: string, expanded:
MyViewTreeModel
。我有一个selectOntree
方法,可以找到一个节点并将selected设置为true。我的问题是我想滚动到那个项目
export interface MyViewTreeModel {
text: string,
expanded: boolean,
employeeId : number,
treeId: number,
items?: MyViewTreeModel [],
selected: boolean
}
myData
属于MyViewTreeModel
类型。
我尝试的一个解决方案是:我在模型中添加了ref?:any
,并尝试了treeItem.ref.current.focus(),但ref未定义
我尝试的另一个解决方案是将此属性添加到TreeView:
ref={component => treeViewRef.current = component}
if(!_.isNil(treeViewRef.current) ){
let domElement = ReactDOM.findDOMNode(treeViewRef.current);
let treeItemDom = domElement.firstChild.firstChild;
(treeItemDom as HTMLElement).focus();
}
然后尝试此操作只是为了选择树状视图中的第一个“li”标记:
ref={component => treeViewRef.current = component}
if(!_.isNil(treeViewRef.current) ){
let domElement = ReactDOM.findDOMNode(treeViewRef.current);
let treeItemDom = domElement.firstChild.firstChild;
(treeItemDom as HTMLElement).focus();
}
这不起作用,它没有把焦点放在那一点上
我在想,也许我应该定义一个自定义itemRender,它有一个ref,我可以找到它的offsetTop
,但是有多个项目,如何为每个项目创建不同的ref?或者是一个自定义ItemRender,它呈现一个输入(使用css,我可以使它看起来像一个span),然后将自动聚焦设置为true
(如果选择为true)。不确定“自动对焦”是否为“真”,请滚动到该项目。这是我可以找到的解决方案:
export interface MyViewTreeModel {
text: string,
expanded: boolean,
employeeId : number,
treeId: number,
items?: MyViewTreeModel [],
selected: boolean
}
添加对TreeView的引用
让treeViewRef=useRef(null)代码>
作为回报声明:
<TreeView
data={myData}
expandIcons={true}
onExpandChange={onExpandChange}
onItemClick={OnItemClick}
aria-multiselectable={false}
aria-label={'text'}
ref={component => treeViewRef.current = component}></TreeView>
这是我可以找到的解决方案,以使其发挥作用:
添加对TreeView的引用
让treeViewRef=useRef(null)代码>
作为回报声明:
<TreeView
data={myData}
expandIcons={true}
onExpandChange={onExpandChange}
onItemClick={OnItemClick}
aria-multiselectable={false}
aria-label={'text'}
ref={component => treeViewRef.current = component}></TreeView>
你能把你的代码放在某个地方吗?到目前为止你试过什么?你能把你的代码放在某个地方吗?