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

如何对网站进行优化免费建购物网站

如何对网站进行优化,免费建购物网站,四川建设网官网登录,网站建设的核心是什么时候使用 ref 操作 DOM#xff1f; 有时你可能需要访问由 React 管理的 DOM 元素 —— 例如#xff0c;让一个节点获得焦点、滚动到它或测量它的尺寸和位置。在 React 中没有内置的方法来做这些事情#xff0c;所以你需要一个指向 DOM 节点的 ref 来实现。 怎么使用 r…什么时候使用 ref 操作 DOM 有时你可能需要访问由 React 管理的 DOM 元素 —— 例如让一个节点获得焦点、滚动到它或测量它的尺寸和位置。在 React 中没有内置的方法来做这些事情所以你需要一个指向 DOM 节点的 ref 来实现。 怎么使用 ref 操作 DOM 首先引入 useRef Hook import { useRef } from react;片然后在你的组件中使用它声明一个 ref const myRef useRef(null);最后将你的 ref 作为 ref 属性传递给你想要获得 DOM 节点的 JSX 标签: div ref{myRef}useRef Hook 返回一个对象该对象有一个名为 current 的属性。最初myRef.current 是 null。当 React 为这个 div / 创建一个 DOM 节点时React 会把对该节点的引用放入 myRef.current。然后你可以从 事件处理器 访问此 DOM 节点并使用在其上定义的内置浏览器 API。 myRef.current.scrollIntoView();如何使用 ref 回调管理 ref 列表 有时候你可能需要为列表中的每一项都绑定 ref 而你又不知道会有多少项。像下面这样做是行不通的 ul{items.map((item) {// 行不通const ref useRef(null);return li ref{ref} /;})} /ul这是因为 Hook 只能在组件的顶层被调用。不能在循环语句、条件语句或 map() 函数中调用 useRef 。 一种可能的解决方案是用一个 ref 引用其父元素然后用 DOM 操作方法如 querySelectorAll 来寻找它的子节点。然而这种方法很脆弱如果 DOM 结构发生变化可能会失效或报错。 另一种解决方案是将函数传递给 ref 属性。这称为 ref 回调。当需要设置 ref 时React 将传入 DOM 节点来调用你的 ref 回调并在需要清除它时传入 null 。这使你可以维护自己的数组或 Map并通过其索引或某种类型的 ID 访问任何 ref。 import { useRef } from react;export default function CatFriends() {const itemsRef useRef(null);function scrollToId(itemId) {const map getMap();const node map.get(itemId);node.scrollIntoView({behavior: smooth,block: nearest,inline: center});}function getMap() {if (!itemsRef.current) {// 首次运行时初始化 Map。itemsRef.current new Map();}return itemsRef.current;}return (navbutton onClick{() scrollToId(0)}Tom/buttonbutton onClick{() scrollToId(5)}Maru/buttonbutton onClick{() scrollToId(9)}Jellylorum/button/navdivul{catList.map(cat (likey{cat.id}ref{(node) {const map getMap();if (node) {map.set(cat.id, node);} else {map.delete(cat.id);}}}imgsrc{cat.imageUrl}alt{Cat # cat.id}//li))}/ul/div/); }const catList []; for (let i 0; i 10; i) {catList.push({id: i,imageUrl: https://placekitten.com/250/200?image i}); }怎样访问另一个组件的 DOM 节点 当你将 ref 放在像 这样输出浏览器元素的内置组件上时React 会将该 ref 的 current 属性设置为相应的 DOM 节点例如浏览器中实际的 。 但是如果你尝试将 ref 放在 你自己的 组件上例如 默认情况下你会得到 null。 import { useRef } from react;function MyInput(props) {return input {...props} /; }export default function MyForm() {const inputRef useRef(null);function handleClick() {inputRef.current.focus();}return (MyInput ref{inputRef} /button onClick{handleClick}聚焦输入框/button/); }为了帮助您注意到这个问题React 还会向控制台打印一条错误消息 发生这种情况是因为默认情况下React 不允许组件访问其他组件的 DOM 节点。甚至自己的子组件也不行这是故意的。Refs 是一个应急方案应该谨慎使用。手动操作 另一个 组件的 DOM 节点会使你的代码更加脆弱。 相反想要 暴露其 DOM 节点的组件必须选择该行为。一个组件可以指定将它的 ref “转发”给一个子组件。下面是 MyInput 如何使用 forwardRef API import { forwardRef, useRef } from react;const MyInput forwardRef((props, ref) {return input {...props} ref{ref} /; });export default function Form() {const inputRef useRef(null);function handleClick() {inputRef.current.focus();}return (MyInput ref{inputRef} /button onClick{handleClick}聚焦输入框/button/); }
http://www.zqtcl.cn/news/297607/

相关文章:

  • 手机网站 底部菜单网站切换效果
  • 珠海公司做网站wordpress最近访客
  • 网站设计制作合同html5网页制作源代码
  • 长春网站建设方案咨询朝阳网站建设是什么
  • 网站开发人员是什么网页设计需要学什么书
  • 韩国食品网站设计欣赏深圳最新新闻事件头条
  • 免费的源码网站有哪些ui界面设计总结心得
  • 那个网站可以做视频app制作北京私人做网站
  • 西安市网站制作公司外贸网站建设步骤
  • 学做网站是什么专业广州建站外包公司历史长
  • 网站必备功能桂林网站建
  • 网站导航栏特效网站地图后台可以做吗
  • 站长工具亚洲高清个人网站建设研究意义
  • 网站制作哪家最好数商云怎么样
  • 做棋牌网站违法嘛免费下载百度
  • 兰州营销型网站建设直播app怎么开发
  • 生成拼贴的网站小程序源码之家
  • 想搭建网站学什么长春市建设局网站
  • 深圳做三网合一网站云主机玩游戏
  • 网站打开慢网站制作多少钱?
  • 网站制作多少钱一个月做教育培训应该注册什么公司
  • 网站价格套餐自己网站上做淘宝搜索引擎
  • 个人博客网站的设计与实现百度信息流投放
  • 廊坊网站关键字优化企业网站系统建设
  • 建设一个网站主要受哪些因素的影响php网站后台教程
  • 做购物网站学什么技术go 网站开发
  • 第一个做电子商务的网站工信部网站 备案
  • 一个完整的网站建设花都有沒有网站建设的
  • 哪个网站有适合小学生做的题目建站工具模板
  • 做家教网站赚钱么网站建设算行政工作吗