Reactjs 反应剑道树视图滚动到项目

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:

我正在使用React Kendo Treeview用户界面。我想尝试滚动到树中选定的项目。我找到了许多Javascript和JQuery的示例,但没有一个是React版本的。我摆弄它解决不了这个问题

树中的项目类型为
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>
    

    你能把你的代码放在某个地方吗?到目前为止你试过什么?你能把你的代码放在某个地方吗?