本周总结
分页插件
写分页插件,我开始的想法是:
- 判断是否显示“上一页”
- 判断是否显示“第一页”
- 判断是否显示“…”、”current-2”、”current-1”
- 判断是否显示 current页面
- 判断是否显示”current+1”、”current+2”、“…”
- 判断是否显示“最后一页”
- 判断是否显示“最后一页”
我的目的是最少要显示cuurent周围的四个number,按照这个想法写出来,当cuurent为1时,只会显示123三个number,而我的预期是现实12345这五个number😔调整一下做法,将上面的3-5合并,left
和right
表示current-2
和current+2
,在left<0
时候,将right
加上left
的相反数,right>total
同理
最后,我还是找了一个插件用在项目中,👉插件的名字是:react-paginate,css部分需要你自己去写…
react and jquery
目前有一个container的组件,它的子组件是list和detail,list的子组件是item,点击item,detail组件会显示,显示效果是通过增加删除类名实现的。想着组件传值比较麻烦,于是就在方法里面直接使用jq早啊道元素控制。大哥告诉我,这个解决办法是不推荐的。👉正确的做法是使用state。通过改变state的值,进而改变元素的class。
redis
还记得之前的一个面试问题:视频有最热视频、点赞最多视频、其他视频,每次去服务器要十个数据…由于用户使用量很多,每次去数据库查询,访问量太大。这样的话,👉可以使用redis去做缓存,这样取数据库可以直接取缓存中取,设置一个时间去更新redis即可。
现在又一个需求,是记录每天用户登录网站的数量。👉方法一:给用户表增加一个最后登录时间的列,每天定时执行程序,统计一下最后登录时间是昨天的用户数量。这个方法中,选择什么时候去执行程序很重要,要不然就会有漏网之鱼。👉方法二:最粗暴的办法是,在redis中创建一个字段,它是一个数组,每次知道用户登录的时候,就将用户的idpush
进数组,每天用户的登录的数量,直接通过数组的长度就可以得到。这个方法的缺点就是:用户的id
字段也是一串很长的字符串,数组会特别大。👉方法三:在redis中创建一个字段,它是一个字符串,默认是长度是用户的数量的0,若用户登录,就将对应的位置为1。在这三个方法中,第三个方法是最优方法。
还有一个可以做缓存的数据库叫memcache,它和redis的区别就是,redis可以持久化。
插件js-base64
Graphql
中自带的分页,after字段是base64的字符串。前端传值就需要将数字转化成base64位的字符串。
import { Base64 } from 'js-base64';
const cursor = Base64.encode(number);
最后说句题外话,任何炒作都不能改变一个东西没落的事实,与其去炒作,还不如用脑子把东西做的更好。