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

如何自己做网站界面wordpress添加分享

如何自己做网站界面,wordpress添加分享,手游传奇代理平台,新产品宣传推广策划方案为什么要使用自定义 Hooks 自定义 Hooks 是 React 中一种复用逻辑的机制#xff0c;通过它们可以抽离组件中的逻辑#xff0c;使代码更加简洁、易读、易维护。它们可以在多个组件中复用相同的逻辑#xff0c;减少重复代码。 1、useThrottle 代码 import React,{ useRef,…为什么要使用自定义 Hooks 自定义 Hooks 是 React 中一种复用逻辑的机制通过它们可以抽离组件中的逻辑使代码更加简洁、易读、易维护。它们可以在多个组件中复用相同的逻辑减少重复代码。 1、useThrottle 代码 import React,{ useRef, useState,useEffect } from react;/*** useThrottle一个节流的 hook用于限制状态更新的频率。** param {any} initialState 初始状态* param {number} delay 节流间隔时间默认为 500 毫秒* returns {any} 节流后的状态*/ export const useThrottle (initialState, delay 5000) {const [state, setState] useState(initialState);const timeout useRef();const nextValue useRef(null);const hasNextValue useRef(false);useEffect(() {if (timeout.current) {nextValue.current initialState;hasNextValue.current true;} else {setState(initialState);const timeoutCallback () {if (hasNextValue.current) {setState(nextValue.current);hasNextValue.current false;}timeout.current undefined;};timeout.current setTimeout(timeoutCallback, delay);}return () {timeout.current clearTimeout(timeout.current);}}, [initialState]);return state; };用法 import { useThrottle } from ./useThrottle;const value useThrottle(state, 500);2、useVirtual 代码 import { useEffect, useState } from react;/*** useVirtual一个虚拟滚动的 hook用于优化长列表的渲染性能。** param {object} listRef 列表的引用对象* param {Array} list 初始列表数据* param {boolean} isFullScreen 是否全屏显示* returns {Array} 显示在视图中的列表数据和 padding 样式*/ export const useVirtual (listRef, list, isFullScreen) {const origin list;let viewHeight null;let itemHeight 0;let dur 0;const rootFontSize parseInt(document.documentElement.style.fontSize);const [viewList, setViewList] useState(list);const [startIndex, setStartIndex] useState(0);const [endIndex, setEndIndex] useState(0);const [padding, setPadding] useState({paddingTop: 0,paddingBottom: 0,});useEffect(() {init(listRef);}, []);useEffect(() {initData(listRef.current);update();}, [startIndex]);function init(ref) {initData(ref.current);render(startIndex, dur 1);eventBind(ref.current);}function initData(dom) {const target isFullScreen ? document.documentElement : dom;viewHeight isFullScreen ? target.offsetHeight : target.parentNode.offsetHeight;itemHeight target.getElementsByClassName(virtual-item)[0].offsetHeight;dur Math.floor(viewHeight / itemHeight);}function eventBind(dom) {const eventTarget isFullScreen ? window : dom.parentNode;eventTarget.addEventListener(scroll, handleScroll, false);}function render(startIndex, endIndex) {setViewList(() origin.slice(startIndex, endIndex));setEndIndex(() startIndex dur 1);}function handleScroll(e) {e.stopPropagation();const target isFullScreen ? document.documentElement : listRef.current.parentNode;setStartIndex(() Math.floor(target.scrollTop / itemHeight));}function update() {if (startIndex endIndex) return;setEndIndex(() startIndex dur);render(startIndex, endIndex);setPadding(() {return {paddingTop: (startIndex * itemHeight) / rootFontSize,paddingBottom: ((origin.length - endIndex) * itemHeight) / rootFontSize,};});}return [viewList, padding]; };用法 import { useRef } from react; import { useVirtual } from ./useVirtual;const listRef useRef(); const [viewList, padding] useVirtual(listRef, initialList, false);3、useCopyToClipboard 代码 import { message } from antd;/*** useCopyToClipboard一个 hook用于复制文本到剪贴板。** returns {Array} 包含单个函数 handleCopy用于复制文本到剪贴板*/ const useCopyToClipboard () {function handleCopy(text) {if (text) {let input document.createElement(input);input.type text;input.value text;input.style.position fixed;input.style.opacity 0;document.body.appendChild(input);input.select();if (document.execCommand(copy)) {message.success(复制成功);} else {message.error(复制失败);}document.body.removeChild(input);} else {message.error(复制失败);}}return [handleCopy]; };export default useCopyToClipboard;用法 import useCopyToClipboard from ./useCopyToClipboard;const [handleCopy] useCopyToClipboard();const copyText () {handleCopy(需要复制的文本); };4、useSmoothEnter 代码 import { useState, useEffect, useRef } from react;/*** useSmoothEnter一个 hook在 DOM 元素进入视口时添加平滑的进入动画。** returns {object} ref - 一个可以附加到 DOM 元素的 ref 对象用于动画效果*/ const useSmoothEnter () {const ref useRef(null);const [isVisible, setIsVisible] useState(false);const [animationStyle, setAnimationStyle] useState({animation: ,animationPlayState: paused,});useEffect(() {const observer new IntersectionObserver((entries) {const [entry] entries;setIsVisible(entry.isIntersecting);});const element ref.current;if (element) {observer.observe(element);return () {observer.unobserve(element);};}}, [ref]);useEffect(() {if (isVisible) {setAnimationStyle({animation: enterAnimation 1s ease,animationPlayState: running,});}}, [isVisible]);useEffect(() {const element ref.current;if (element) {element.style.animation animationStyle.animation;element.style.animationPlayState animationStyle.animationPlayState;}}, [animationStyle]);return ref; };export default useSmoothEnter;用法 import useSmoothEnter from ./useSmoothEnter;const ref useSmoothEnter();return div ref{ref} classNameanimated-element内容/div;
http://www.hkea.cn/news/14424236/

相关文章:

  • 专门做土特产的网站企业网站首页设计欣赏
  • 网站标题在哪里修改o2o好网站
  • 上海建设部网站微信网站结构
  • seo营销型网站推广网络运营与管理
  • 兰州新区建设局网站wordpress段落缩进
  • 潍坊建设网站做catalog的免费网站
  • dede 网站名称网站建设到哪个店做
  • 安徽网站建设价格智能网联对应的职业
  • 互联网金融p2p网站建设模板wordpress 管网
  • 网站备案前置审批表成都两条传播链在成华区
  • 阿里云Windows网站建设wordpress升级后编辑器没有
  • 网站布局英文贵阳网站建设方案维护
  • 做销售的去哪个网站应聘医院管理系统
  • 做网站卖酒说说seo论坛
  • 做门窗安装去哪些网站找生意数据分析师培训机构
  • php在网站后台建设中的优势 张晋芳30秒牢记5个域名
  • 怎么看网站空间多大建筑工程行业网站建设方案
  • 哪个网站下载软件最安全深圳广告设计与制作公司
  • 免费网站空间和域名陕西示范校建设专题网站
  • 岳阳网站制作蓝衫网站建设
  • 即墨有做网站的吗长沙专业外贸网站建设
  • 南京市建设行政网站设计师导航
  • 微信 host 微网站模版湖南长沙有哪些大学
  • 屏蔽阿里云网站wordpress 用户功能
  • 做网站域名费向哪里交商业设计师是做什么的
  • 怎么做好网站开发_设计泉州网站建设制作
  • 青岛做网站公司电话百度网盟推广网站
  • 河南网站建设网络公司灵台县门户网站
  • 网站后台系统有哪些建筑工程网手机版
  • 廊坊关键词seo排名网站做网站建设公司网易互客