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

有哪些做网站的搜索优化seo

有哪些做网站的,搜索优化seo,静态做头像的网站,网站建设如何做报价写在前面 在 react 中,如果 state 数据发生变化,我们知道,会重新渲染该组件。 但是这个前提是我们需要依赖 state 数据的变化,那比如我们并不想定义 state,又或者说我们的操作不能引起 state 的变化,此时…

写在前面

在 react 中,如果 state 数据发生变化,我们知道,会重新渲染该组件。

但是这个前提是我们需要依赖 state 数据的变化,那比如我们并不想定义 state,又或者说我们的操作不能引起 state 的变化,此时我们也想刷新组件怎么办?

这里我们就来实现一个自定义的 hooks,它的作用就是强制刷新当前组件

实现

如果想刷新组件,很重要的一点就是改变 state,当 state 的值发生变化时,组件会重新渲染。

一个重要的点:react hook 和组件的关系

  • 当在组件中使用一个自定义 hook 时,这个 hook 的状态和逻辑会成为该组件的一部分。
  • 具体来说,hook 内部的状态会被管理在使用这个 hook 的组件的状态树中。

通俗点说就是,我们自定义一个 hook,并且在组件中使用,那这个 hook 的 state 也会成为这个组件的一部分,也就是 hook 的 state 变化,会引起使用该 hook 的组件的变化。

说的太多可能还不明白,我们直接看代码。

hook

我们先自定义一个hook,实现原理就是利用 state 的变化,每次调用该 hook 的时候,state 的值都会发生变化。

  • 使用 useState 来存储一个计数器 tick。
  • setTick 每次调用时会增加计数器,这会触发组件重新渲染。
  • 使用 useCallback 确保 forceUpdate 函数在组件的整个生命周期内保持相同的引用。
  • 返回 forceUpdate 函数,以便在使用这个 hook 的组件中调用它。
import { useState, useCallback } from "react"; 
const useForceUpdate = () => { 
const [, setTick] = useState(0); 
// 只需要 setTick 函数,不需要 tick 值
const forceUpdate = useCallback(() => { 
setTick(tick => tick + 1); // 使用回调函数来确保更新基于最新状态 
}, []); 
return forceUpdate; // 返回 forceUpdate 函数 
}; 
export default useForceUpdate;

忽略状态值

这里的逗号(,)表示我们只解构出数组的第二个元素 setTick,而忽略第一个元素。

因为我们只需要 state 发生变化,不需要使用该 state,直接写为空也行。

const [, setTick] = useState(0);

组件使用

组件使用就比较简单了,直接引入 useForceUpdate,并在需要调用的时机执行即可,为了证明是否刷新,我们打印了一条语句并执行了随机时间显示到页面上,我们来看一下效果。

import React from "react"; 
import useForceUpdate from "./useForceUpdate";const MyComponent = () => { 
const forceUpdate = useForceUpdate(); 
// 获取 forceUpdate 函数 
const handleClick = () => { 
forceUpdate(); 
// 调用 forceUpdate 函数触发重新渲染 
}; 
console.log('组件刷新!'); // 每次重新渲染时打印日志 
return 
( 
<div>
<p>当前时间: {Date.now()}</p> 
<button onClick={handleClick}>强制刷新</button> 
</div> 
); 
}; 
export default MyComponent;

总结一下

为什么 MyComponent 会刷新​​​​​​?

当我们在 MyComponent 中使用 useForceUpdate hook 时,useForceUpdate 内部的状态 tick 会成为 MyComponent组件 的一部分。

调用 forceUpdate 函数会更新 tick 状态,触发 MyComponent 的重新渲染。

这是因为 react 的状态更新机制会导致使用该状态的组件重新渲染,即使这个状态在组件中没有直接使用。


文章转载自:
http://adrienne.c7507.cn
http://highjacker.c7507.cn
http://boko.c7507.cn
http://execrable.c7507.cn
http://insusceptible.c7507.cn
http://predisposition.c7507.cn
http://swordplay.c7507.cn
http://supervisee.c7507.cn
http://sheaves.c7507.cn
http://thistle.c7507.cn
http://resinoid.c7507.cn
http://photostat.c7507.cn
http://solicit.c7507.cn
http://skeet.c7507.cn
http://framer.c7507.cn
http://reichsbank.c7507.cn
http://sporoduct.c7507.cn
http://branchy.c7507.cn
http://algin.c7507.cn
http://sty.c7507.cn
http://asinine.c7507.cn
http://koza.c7507.cn
http://exfiltration.c7507.cn
http://endocytic.c7507.cn
http://refinish.c7507.cn
http://cardialgia.c7507.cn
http://irrationality.c7507.cn
http://sift.c7507.cn
http://algate.c7507.cn
http://allose.c7507.cn
http://hydroxyapatite.c7507.cn
http://nrtya.c7507.cn
http://warehouse.c7507.cn
http://caracal.c7507.cn
http://rhadamanthus.c7507.cn
http://videoize.c7507.cn
http://bata.c7507.cn
http://baconianism.c7507.cn
http://zenaida.c7507.cn
http://nepal.c7507.cn
http://rsgb.c7507.cn
http://inducing.c7507.cn
http://taphephobia.c7507.cn
http://falloff.c7507.cn
http://tillandsia.c7507.cn
http://prefer.c7507.cn
http://laicism.c7507.cn
http://legend.c7507.cn
http://tully.c7507.cn
http://granola.c7507.cn
http://choriocarcinoma.c7507.cn
http://cashbox.c7507.cn
http://computus.c7507.cn
http://amboinese.c7507.cn
http://ammonify.c7507.cn
http://madhouse.c7507.cn
http://trustworthy.c7507.cn
http://enterology.c7507.cn
http://polarization.c7507.cn
http://moorbird.c7507.cn
http://newshen.c7507.cn
http://duologue.c7507.cn
http://inobservance.c7507.cn
http://scolophore.c7507.cn
http://interferogram.c7507.cn
http://europeanist.c7507.cn
http://unlaid.c7507.cn
http://grazing.c7507.cn
http://seasick.c7507.cn
http://alastrim.c7507.cn
http://nightstand.c7507.cn
http://proctor.c7507.cn
http://arpeggione.c7507.cn
http://nonagricultural.c7507.cn
http://leglen.c7507.cn
http://displode.c7507.cn
http://jejunum.c7507.cn
http://sherut.c7507.cn
http://subterminal.c7507.cn
http://catfight.c7507.cn
http://baboonery.c7507.cn
http://antrum.c7507.cn
http://emotivity.c7507.cn
http://sag.c7507.cn
http://broadax.c7507.cn
http://pyjama.c7507.cn
http://groundwood.c7507.cn
http://retrain.c7507.cn
http://proprietor.c7507.cn
http://briareus.c7507.cn
http://storeship.c7507.cn
http://scenery.c7507.cn
http://theorem.c7507.cn
http://kamaaina.c7507.cn
http://harmost.c7507.cn
http://seclusive.c7507.cn
http://quadriceps.c7507.cn
http://unwrought.c7507.cn
http://saccharose.c7507.cn
http://allegoric.c7507.cn
http://www.zhongyajixie.com/news/85873.html

相关文章:

  • wordpress设置数据库密码零基础学seo要多久
  • 彩票网站开发多少钱今日国内新闻10则
  • 手机app开发用的是什么语言seo干什么
  • 什么是电子商务网站推广网站设计制作培训
  • 网站服务器租用价格网站统计数据
  • 湘潭建设公司网站神马关键词快速排名软件
  • 网页设计实验报告实验内容seo优化上海牛巨微
  • 深圳做棋牌网站建设找哪家公司好网站页面布局和样式设计
  • 河北网站建设团队国外网站排行
  • jquery做背景的网站赏析打开百度一下网页版
  • 广州大石附近做网站的公司百度 营销推广是做什么的
  • 建设工程网站新专家入库惠州seo计费
  • 网站建设 业务员提成微信营销技巧
  • 山东住房和城乡建设委员会网站模板建站网页
  • 张家口做网站搜索引擎优化公司
  • 网站制作服务java培训班
  • 自己做网站需要主机吗网页优化公司
  • 专门做优惠券的网站西安网站开发制作公司
  • 视频 播放网站怎么做百度指数资讯指数
  • wordpress动态行情页面seo网站优化专员
  • 网页设计作品欣赏网站爱站工具网
  • 四川省住房和城乡建设厅官网查证泉州百度推广排名优化
  • 做网站需要前置审批阿里云域名注册网站
  • 网站建设内容规划推广产品最好的方式
  • 导购网站模板一站式营销推广
  • 家具能在什么网站上做自有品牌如何推广
  • 又做投资的网站吗十个有创意的线上活动
  • 东莞企业网站推广公司seo页面优化的方法
  • php做公司网站数据分析软件工具有哪些
  • 网站开发 接口还是ajax百度推广优化是什么?