element-react icon indicating copy to clipboard operation
element-react copied to clipboard

组件更新state任意内容后,Tree 节点选中渲染被清空

Open rowthan opened this issue 7 years ago • 3 comments

Description

当执行 getCheckedServer 后,原本选中的节点会被清空,重新选择节点也会出现选a 结果为选 b 的情况。 image

getCheckedServer(){
    this.setState({
      test:this.tree.getCheckedKeys(true)
    })
  }
render() {
    const { data, options } = this.state;
    return (
      <div>
        <Tree
          ref={e=>this.tree = e}
          data={data}
          options={options}
          isShowCheckbox={true}
          nodeKey="id"
          defaultExpandAll={true}
          expandOnClickNode={false}
          renderContent={(...args)=>this.renderContent(...args)}
        />
        <button onClick={this.getCheckedServer.bind(this)}>查看</button>
      </div>
    )
  }

rowthan avatar Apr 10 '18 02:04 rowthan

照理来说哪些节点被选中是 Tree 组件内部的 state 进行管理的,修改父组件的 state 只要没有涉及到传入 Tree 的数据,Tree 是不应该被重新渲染才对的啊。

rowthan avatar Apr 10 '18 02:04 rowthan

同样的情况也出现在路由跳转。 /a 路由下 为 Tree 视图,当从 /a 跳转至 /b,然后又回到 /a, 正确的情况是 /a 视图重新渲染,且功能正常,但实际情况是 视图重新渲染了,但是功能不正常了,不能正确的点击节点选择,同时存在 选择 a 无效,需要选择多次才生效;选择 a 但视图渲染 选中了b节点的情况。

rowthan avatar Apr 10 '18 03:04 rowthan

遇到了同样的情况 请问是怎么解决的呀?

zhangmingcai avatar Aug 31 '20 13:08 zhangmingcai