技术标签: ningto.com
这里解决两个问题:
* 判断某个组件是否滚动到底部
* 页面切换出去再切换回来后怎样保持之前的滚动位置
要保证这个组件就是那个滚动的组件,overflowY为scroll
<div ref={ node => this.contentNode = node }>
onScrollHandle(event) {
const clientHeight = event.target.clientHeight
const scrollHeight = event.target.scrollHeight
const scrollTop = event.target.scrollTop
const isBottom = (clientHeight + scrollTop === scrollHeight)
console.log('is bottom:' + isBottom)
}
componentDidMount() {
if (this.contentNode) {
this.contentNode.addEventListener('scroll', this.onScrollHandle.bind(this));
}
}
componentWillUnmount() {
if (this.contentNode) {
this.contentNode.removeEventListener('scroll', this.onScrollHandle.bind(this));
}
}
let scrollTop = 0
onScrollHandle(event) {
const clientHeight = event.target.clientHeight
const scrollHeight = event.target.scrollHeight
const scrollTop = event.target.scrollTop
const isBottom = (clientHeight + scrollTop === scrollHeight)
if (this.state.isScrollBottom !== isBottom) {
this.setState({
isScrollBottom: isBottom
})
}
}
componentDidMount() {
if (this.contentNode) {
this.contentNode.addEventListener('scroll', this.onScrollHandle.bind(this));
this.contentNode.scrollTop = scrollTop
}
}
componentWillUnmount() {
if (this.contentNode) {
this.contentNode.removeEventListener('scroll', this.onScrollHandle.bind(this));
scrollTop = this.contentNode.scrollTop
}
}
scrollTop放在类外面作为全局变量
主要是从不同的地方一块弄过来,整理一下,确实好用AndroidAccessors快速生成get和set方法的插件,其实系统的也有类似功能,这个更快。Lifecycle-Sorter可以根据Activity或者fragment的生命周期对其生命周期方法位置进行先后排序, 快捷键Ctrl + alt + KJsonOnlineViewer可实
本篇整理了再 Visual Studio 2019 版本上 Github 插件的安装和使用。包括了本地库和远程库的创建,以及 Git 中最基础的提交和拉取操作。后序会继续整理分支的处理这种比较复杂的使用操作。有错误地方请多多指正!谢谢!
首先从网上下载一个生成验证码的Servlet:package com.train.controller;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import...
一、什么是任务在裸机系统中,系统的主体就是main函数里面顺序执行的无限循环,这个无限循环里面CPU按照顺序完成各种事情。在多任务系统中,我们根据功能的不同,把整个系统分割成一个个独立的且无法返回的函数,这个函数我们称为任务,也可以称之为线程。void task1(void *pvParameters){ /* 任务主体,无限循环且不能返回 */ for(;;) { /* 任务主体代码 */ vTaskDelay( 2000 ); }}二、任务状态FreeRTOS中的任务永
在已经绑定数据源时,无法以Add的方式方式添加行,会报错解决方法一:DataRow dr =((DataTable)dataGridView1.DataSource).NewRow;((DataTable)dataGridView1.DataSource).Rows.Add(dr);解决方法二://先将datatable(dt)新增行,然后重新绑定数据源//DataT...
“众人拾柴火焰高”是句老话,但电脑领域却发生了多根线比不过1根线的怪事。无论从通信速度、造价还是通信质量上来看,现今的串行传输方式都比并行传输方式更胜一筹。 近两年,大家听得最多的一个词可能就是串行传输了。从技术发展的情况来看,串行传输方式大有彻底取代并行传输方式的势头,USB取代IEEE 1284,SATA取代PATA,PCI Express取代PCI……从原理来看,并行传输方式其实优于串行
分隔字符串,使用“str_split”就可以了好处是连空格也会作为数组的元素。我之前的例子就是因为前一个字符串包含2个空格,而后一个只有一个。但是输出的时候看到的显示都是一样的。也可以按照其他分隔符进行分割,如“explode”或者“preg_split”,php教程 explode() 函数php string 函数定义和用法explode() 函数把字符串分割为数组。语法explode(sep...
Windows线程池 上一篇博文我们介绍了IO完成端口。得知IO完成端口可以非常智能的分派线程。但是IO完成端口仅对等待它的线程进行分派,创建和销毁线程的工作仍然需要我们自己来做。 我们自己也可以创建线程,但是涉及到线程的编码操作比较复杂,容易出现差错。为了简化程序员的工作,Windows提供了一个线程池机制来简化线程的创建、销毁以及日常管理。这个新线程池可能不
先拿一个茶壶模型当例子新建一个茶壶模型,为之创建一个Standard材质球,设置属性 将Max中的渲染效果图导出成FBX文件Presets选择 Autodesk Media & EntertAInment取消Animation、Cameras、Lights的勾选勾选Embed Media,它会把材质和贴图数据写入FBX文件中其他都保持不变导出的文件复制到Unity项目的Asserts目录下Unity会解析这个FBX,分解出它的材质和贴图Materials中存放该模型的所有材质,Te
1、操作系统版本查看操作系统版本 cat /etc/issueCentOS release 6.6 (Final)Kernel \r on an \m关闭防火墙和selinux sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config iptables -F service iptables save
引言在OpenGL中有三种类型的光:方向光(directional)、点光(point)、聚光(spotlight)。本教程将从方向光讲起,首先我们将使用GLSL来模仿OpenGL中的光。我们将向shader中逐渐添加环境光、散射光和高光效果。后面的教程中我们将使用逐像素光照以获得更好的效果。接下来我们将实现逐像素的点光和聚光。这些内容与方向光很相近...
1.ln -s /home/XXX.sh /etc/init.d/XXX2.使用update-rc.d 完成自启动 启动和关闭顺序为90,级别默认 update-rc.d <basename> defaults 90 默认 update-rc.d XXX defaults...