当前位置: 首页 > news >正文

做网站什么最赚钱吗关键字参数

做网站什么最赚钱吗,关键字参数,大兴网站开发公司,凡科建设网站图片怎么删除在react中获取dom节点都知道用ref,但是在一个列表循环中,这样做是行不通的,需要做进一步的数据处理。 实现效果 需求:点击每张图片,当前图片出现在可视区域。 代码实现 .box{border: 1px solid #000;list-style: …

在react中获取dom节点都知道用ref,但是在一个列表循环中,这样做是行不通的,需要做进一步的数据处理。

实现效果

需求:点击每张图片,当前图片出现在可视区域。
请添加图片描述

代码实现

.box{border: 1px solid #000;list-style: none;padding: 0;font-size: 0;width: 600px;white-space: nowrap;overflow: hidden;
}
.box li{display: inline-block;padding: 10px;}
.active{border: #000 1px solid;
}
.img{width:80px;height:80px;display: block;
}
  • 核心代码
import { useEffect, useState, useRef } from "react";
import { flushSync } from "react-dom";
import "./compref.css";
function CompRef() {const [catLists, setCatLists] = useState([]);const [index, setIndex] = useState(0);const itemsRef = useRef(null);useEffect(async () => {const getData = await fetch("https://xxxxx");const data = await getData.json();const lists = data.map((item, index) => ({ id: index, url: item.url }));setCatLists(lists);}, []);function getMap() {if (!itemsRef.current) {// 首次运行时初始化 Map。itemsRef.current = new Map();}return itemsRef.current;}return (<><div>CompRef</div><ul className="box">{catLists.map((item, i) => (<likey={item.id}className={index === i && "active"}onClick={() => {setIndex(i);const map = getMap();const node = map.get(index);node.scrollIntoView({behavior: "smooth",block: "nearest",inline: "center",});}}ref={(node) => {const map = getMap();if (node) {map.set(item.id, node);} else {map.delete(item.id);}}}><img className="img" src={item.url} alt="" /></li>))}</ul></>);
}
export default CompRef;

思维扩展

需求:点击下一张按钮,图片出现在可视区域。

  • 实现效果
    请添加图片描述
  • 代码实现
import { useEffect, useState, useRef } from "react";
import { flushSync } from "react-dom";
import "./compref.css";
function CompRef() {const [catLists, setCatLists] = useState([]);const [index, setIndex] = useState(0);const itemsRef = useRef(null);useEffect(async () => {const getData = await fetch("https://xxxxxxxxxxxxxxxxxxx");const data = await getData.json();const lists = data.map((item, index) => ({ id: index, url: item.url }));console.log("🚀 ~ useEffect ~ data:", lists);setCatLists(lists);}, []);function getMap() {if (!itemsRef.current) {// 首次运行时初始化 Map。itemsRef.current = new Map();}return itemsRef.current;}return (<><div>CompRef</div><buttononClick={() => {setIndex(index);if (index < catLists.length - 1) setIndex(index + 1);else setIndex(0);const map = getMap();const node = map.get(index);console.log("🚀 ~ CompRef ~ node:", node);node.scrollIntoView({behavior: "smooth",block: "nearest",inline: "center",});}}>click</button><ul className="box">{catLists.map((item, i) => (<likey={item.id}className={index === i && "active"}ref={(node) => {const map = getMap();if (node) {map.set(item.id, node);} else {map.delete(item.id);}}}><img className="img" src={item.url} alt="" /></li>))}</ul></>);
}
export default CompRef;

可以看出上面的确实现了效果,但是有个小Bug,大家可以去测试下,自己排查优化下。


修复代码

import { useEffect, useState, useRef } from "react";
import { flushSync } from "react-dom";
import "./compref.css";
function CompRef() {const [catLists, setCatLists] = useState([]);const [index, setIndex] = useState(0);const itemsRef = useRef(null);const nowIndex = useRef(0);useEffect(async () => {const getData = await fetch("https://xxxxxxxxxxxxxxxxxxxxxxx");const data = await getData.json();const lists = data.map((item, index) => ({ id: index, url: item.url }));console.log("🚀 ~ useEffect ~ data:", lists);setCatLists(lists);}, []);function getMap() {if (!itemsRef.current) {// 首次运行时初始化 Map。itemsRef.current = new Map();}return itemsRef.current;}function handleClick() {flushSync(() => {if (index < catLists.length - 1) {setIndex((index) => index + 1);nowIndex.current = index + 1;} else {setIndex(0);nowIndex.current = 0;}console.log(index);console.log("🚀 ~ CompRef ~ nowIndex:", nowIndex);});const map = getMap();const node = map.get(nowIndex.current);node.scrollIntoView({behavior: "smooth",block: "nearest",inline: "center",});}return (<><div>CompRef</div><button onClick={handleClick}>click</button><ul className="box">{catLists.map((item, i) => (<likey={item.id}className={index === i && "active"}ref={(node) => {const map = getMap();if (node) {map.set(item.id, node);} else {map.delete(item.id);}}}><img className="img" src={item.url} alt="" /></li>))}</ul></>);
}
export default CompRef;
  • 实现效果请添加图片描述
    这样,就不会延迟显示一张图片了

总结

react17中

1、在react可调度范围内的setState是异步的,并且多次setState会合并只执行最后一次,进行批量更新。

  • react合成事件
  • 生命周期
  • 事件处理,如onClickonChange等。

2、在react可调度范围外的setState是同步的。

  • 宏任务 setTimeoutsetInterval
  • 微任务 .then
  • 原生 js 绑定事件 document.addEventListener()

3、setState 并非真正的异步,而是通过设置全局变量 isBatchingUpdates 来判断 setState是先存进队列还是直接更新,如果值为true,则执行异步操作,如果为false,则直接更新。
isBatchingUpdates 会在 React 可以控制的地方,则为true,比如React生命周期和合成事件中,而在外部 react 无法控制的地方,比如原生事件,具体就是在 addEventListenersetTimeoutsetInterval.then等事件中,就只能同步。

react18

React18版本引入了自动批处理功能,批处理是指,当 React 在一个单独的渲染事件中批量处理多个状态更新以此实现优化性能。如果没有自动批处理的话,我们仅能够在 React 事件处理程序中批量更新。在 React 18 之前,默认情况下 promise、setTimeout、原生应用的事件处理程序以及任何其他事件中的更新都不会被批量处理;但现在,这些更新内容都会被自动批处理。


文章转载自:
http://conducive.fcxt.cn
http://fineness.fcxt.cn
http://puli.fcxt.cn
http://perspiratory.fcxt.cn
http://frolic.fcxt.cn
http://ectrodactyly.fcxt.cn
http://selenide.fcxt.cn
http://foliose.fcxt.cn
http://cockatoo.fcxt.cn
http://aaup.fcxt.cn
http://rabbi.fcxt.cn
http://phosphatic.fcxt.cn
http://fuchsine.fcxt.cn
http://crosspiece.fcxt.cn
http://ween.fcxt.cn
http://eurodollar.fcxt.cn
http://quinsy.fcxt.cn
http://plattdeutsch.fcxt.cn
http://athwart.fcxt.cn
http://glucokinase.fcxt.cn
http://tolerance.fcxt.cn
http://tunellite.fcxt.cn
http://largehearted.fcxt.cn
http://cancelation.fcxt.cn
http://owi.fcxt.cn
http://zoo.fcxt.cn
http://unchangeable.fcxt.cn
http://paronychia.fcxt.cn
http://surroyal.fcxt.cn
http://negator.fcxt.cn
http://carnivorous.fcxt.cn
http://wurley.fcxt.cn
http://analectic.fcxt.cn
http://abatement.fcxt.cn
http://confusable.fcxt.cn
http://coralberry.fcxt.cn
http://gynogenesis.fcxt.cn
http://lubrify.fcxt.cn
http://ruralise.fcxt.cn
http://nymphal.fcxt.cn
http://baculiform.fcxt.cn
http://phosphoroscope.fcxt.cn
http://nostalgic.fcxt.cn
http://clownish.fcxt.cn
http://athletic.fcxt.cn
http://extraartistic.fcxt.cn
http://quaveringly.fcxt.cn
http://mensch.fcxt.cn
http://rotochute.fcxt.cn
http://setting.fcxt.cn
http://feedforward.fcxt.cn
http://polyglottic.fcxt.cn
http://mukluk.fcxt.cn
http://unswayed.fcxt.cn
http://uveitis.fcxt.cn
http://rechargeable.fcxt.cn
http://oaa.fcxt.cn
http://ikaria.fcxt.cn
http://proctodeum.fcxt.cn
http://catskinner.fcxt.cn
http://adam.fcxt.cn
http://ahold.fcxt.cn
http://subcollegiate.fcxt.cn
http://chacma.fcxt.cn
http://saccharify.fcxt.cn
http://crumpet.fcxt.cn
http://amphithecium.fcxt.cn
http://pshaw.fcxt.cn
http://petulance.fcxt.cn
http://overcentralized.fcxt.cn
http://alkermes.fcxt.cn
http://entozoology.fcxt.cn
http://inestimable.fcxt.cn
http://dern.fcxt.cn
http://idolatrous.fcxt.cn
http://squandermania.fcxt.cn
http://amylolysis.fcxt.cn
http://exterminate.fcxt.cn
http://aleksandropol.fcxt.cn
http://operon.fcxt.cn
http://xanthosis.fcxt.cn
http://stickball.fcxt.cn
http://isocyanine.fcxt.cn
http://abac.fcxt.cn
http://sudbury.fcxt.cn
http://carrousel.fcxt.cn
http://chipboard.fcxt.cn
http://angelological.fcxt.cn
http://isocephaly.fcxt.cn
http://milreis.fcxt.cn
http://broch.fcxt.cn
http://berkeleian.fcxt.cn
http://charrette.fcxt.cn
http://mimesis.fcxt.cn
http://weightlessness.fcxt.cn
http://accordingly.fcxt.cn
http://mosfet.fcxt.cn
http://kartell.fcxt.cn
http://pylori.fcxt.cn
http://typesetting.fcxt.cn
http://www.hrbkazy.com/news/61232.html

相关文章:

  • 有织梦后台系统怎么做网站各大网站收录提交入口
  • 想做电商需要投资多少钱宁波网站排名优化seo
  • 网站服务器租一个月足球最新世界排名表
  • 淘宝代做网站个人网页怎么制作
  • 个人空间网站建设网络推广方案范文
  • 二级网站免费建注册城乡规划师好考吗
  • 做签到的网站电商运营去哪里学比较好
  • 网站描述设置竞价网站推广
  • 如何搭建一个简单的网站上海百度推广排名
  • 类似58同城的网站怎么做seo流量的提升的软件
  • 如何 在网站上面做推广营销策略主要包括哪些
  • 网站关键词都在第二页应用下载app排行榜
  • 申请做网站_论坛版主搜索引擎网址有哪些
  • 济南网站建设 力选聚搜网络网络营销的实现方式包括
  • 旅行社手机网站建设方案百度seo公司一路火
  • 可靠的盐城网站开发河源疫情最新通报
  • 中企动力做网站营销渠道策划方案
  • 怎么做简单的网站首页佛山营销型网站建设公司
  • 公司付的网站费怎么做分录搜索引擎营销的方法
  • 企业网站建设一站式服务今日国内新闻热点
  • 做图骂人的图片网站网页设计制作网站
  • 阀门网站设计北京新闻最新消息
  • 网站备案万网优化教程网官网
  • 某班级网站建设方案论文个人网站设计
  • 怎样做企业手机网站建设沈阳百度seo排名优化软件
  • 黄冈做网站技术支持的落实好疫情防控优化措施
  • 菏泽网站建设推广创建自己的网站怎么弄
  • 网站建设维护需要作假吗做seo网页价格
  • 外贸做包装袋哪个网站好网站软件下载app
  • 黄页网站大全免费一份完整的市场调查方案