antd的table滚动到顶部及

Posted webchen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了antd的table滚动到顶部及相关的知识,希望对你有一定的参考价值。

antd的table滚动到顶部

antd的table是经过多层封装的,所以使用id属性是找不到table实例的, (1)先用ref找到table的组件实例, (2)使用ReactDOM.findDOMNode(ref),找到table的DOM实例, (3)通过console.log找到.ant-table-body

antd的table滚动到顶部及

(4)调用scrollTo(0,0)实现滚动到表格顶部的效果.

关键代码如下:

 
   
   
 
  1. <Table  ref={c => this.usertable = c} >

  2. </Table>



  3. let tableDOM=ReactDOM.findDOMNode(this.usertable)

  4. $(tableDOM).find('.ant-table-body')[0].scrollTo(0,0)



React之setState

基本知识

(1)React通过this.state来访问state

 
   
   
 
  1. let {aa}=this.state

  2. //xxxx

(2)通过this.setState()方法来更新state

 
   
   
 
  1. this.setState({

  2. aa:newaa

  3. })

(3)当this.setState()被调用后,会调用render重新渲染UI

一、setState的异步更新 当执行setState时,React 不会立即更新 state(频繁重复),而是将需要更新的state放入 状态队列(enqueueUpdate) 中等待被更新,这样就实现了setState的异步更新。

二、setState循环调用的风险

如图,如果在 componentWillUpdate 或 shouldComponentUpdate 中 调用setState的时候,会导致循环调用,导致浏览器内存占满后崩溃。

着重解决一个问题:

 
   
   
 
  1.  this.setState({ActiveNum:this.state.ActiveNum+1})

  2.      console.log(this.state.ActiveNum,250)   ---------->0

  3.      this.setState({ActiveNum:this.state.ActiveNum+1})

  4.      console.log(this.state.ActiveNum,251)  ----------->0

  5.      setTimeout(()=>{

  6.        this.setState({ActiveNum:this.state.ActiveNum+1})

  7.        console.log(this.state.ActiveNum,252)  ---------->2

  8.        this.setState({ActiveNum:this.state.ActiveNum+1})

  9.        console.log(this.state.ActiveNum,253)  ----------->3

  10.      },0)

第一个和第二个的setState都处于批量更新模式(batchingStrategy)——isBatchingUpdates为true,所以会将组件保存到 dirtyComponents中,setState的结果没有立即生效,因为新的state没有应用到组件中,只是被 列到 dirtyComponents里了。

*第三个和第四个的setState由于setTimeout导致没有调用batchedUpdate,所以isBatchingUpdates为false,因此 React会遍历 dirtyComponetns,调用 updateComponent 并更新 pending state or props 所以当执行setTimeout的第一个setState时,这里的state已经为2,setState之后,打印的是2,setState未及时更新为3,当执行setTimeout的第二个setState时,这里的state已经为3,setState之后,打印的是3,setState未及时更新为4

事务:整个将React组件渲染到DOM中的过程就处于一个事务中。

参考:《深入Rect技术栈》 



 

(完)

以上是关于antd的table滚动到顶部及的主要内容,如果未能解决你的问题,请参考以下文章

放弃antd table,基于React手写一个虚拟滚动的表格

滚动浏览提要时 RecyclerView 跳转到顶部

共享单车—— React后台管理系统开发手记:AntD Table高级表格

点击状态栏时将所有滚动视图滚动到顶部

Antd表头在使用滚动Y和动态列时消失

antd-vue 表格,固定左边第一列,设置滚动,有滚动条,第一列被隐藏