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

百度收录入口查询注意事项关键词排名优化提升培训

百度收录入口查询注意事项,关键词排名优化提升培训,核酸造假7人枪毙,网站+做内容分发资格目录 Hooks概念理解 1. 什么是hooks 2. Hooks解决了什么问题 useState 1. 基础使用 2. 状态的读取和修改 3. 组件的更新过程 4. 使用规则 useEffect 1. 理解函数副作用 2. 基础使用 3. 依赖项控制执行时机 4. 清理副作用 Hooks概念理解 本节任务: 能够理解hooks的…

目录

Hooks概念理解

1. 什么是hooks

2. Hooks解决了什么问题

useState

1. 基础使用

2. 状态的读取和修改

3. 组件的更新过程

4. 使用规则

useEffect

1. 理解函数副作用

2. 基础使用

3. 依赖项控制执行时机

4. 清理副作用


Hooks概念理解

本节任务: 能够理解hooks的概念及解决的问题

1. 什么是hooks

Hooks的本质:一套能够使函数组件更强大,更灵活的“钩子”

React体系里组件分为 类组件 和 函数组件

经过多年的实战,函数组件是一个更加匹配React的设计理念 UI = f(data),也更有利于逻辑拆分与重用的组件表达形式,而先前的函数组件是不可以有自己的状态的,为了能让函数组件可以拥有自己的状态,所以从react v16.8开始,Hooks应运而生

注意点:

  1. 有了hooks之后,为了兼容老版本,class类组件并没有被移除,俩者都可以使用

  2. 有了hooks之后,不能在把函数成为无状态组件了,因为hooks为函数组件提供了状态

  3. hooks只能在函数组件中使用

2. Hooks解决了什么问题

Hooks的出现解决了俩个问题 1. 组件的状态逻辑复用 2.class组件自身的问题

  1. 组件的逻辑复用 在hooks出现之前,react先后尝试了 mixins混入,HOC高阶组件,render-props等模式 但是都有各自的问题,比如mixin的数据来源不清晰,高阶组件的嵌套问题等等

  2. class组件自身的问题 class组件就像一个厚重的‘战舰’ 一样,大而全,提供了很多东西,有不可忽视的学习成本,比如各种生命周期,this指向问题等等,而我们更多时候需要的是一个轻快灵活的'快艇'

useState

1. 基础使用

本节任务: 能够学会useState的基础用法

作用

useState为函数组件提供状态(state)

使用步骤

  1. 导入 useState 函数

  2. 调用 useState 函数,并传入状态的初始值

  3. useState函数的返回值中,拿到状态和修改状态的方法

  4. 在JSX中展示状态

  5. 调用修改状态的方法更新状态

代码实现

import { useState } from 'react'​function App() {// 参数:状态初始值比如,传入 0 表示该状态的初始值为 0// 返回值:数组,包含两个值:1 状态值(state) 2 修改该状态的函数(setState)const [count, setCount] = useState(0)return (<button onClick={() => { setCount(count + 1) }}>{count}</button>)}export default App

2. 状态的读取和修改

本节任务: 能够理解useState下状态的读取和修改

读取状态

该方式提供的状态,是函数内部的局部变量,可以在函数内的任意位置使用

修改状态

  1. setCount是一个函数,参数表示最新的状态值

  2. 调用该函数后,将使用新值替换旧值

  3. 修改状态后,由于状态发生变化,会引起视图变化

注意事项

  1. 修改状态的时候,一定要使用新的状态替换旧的状态,不能直接修改旧的状态,尤其是引用类型

const [count,setCount]=useState(0)

  1. useSate传过来的参数 作为count的初始值

  2. [count, setCount] 这里的写法是一个解构赋值 useState返回值是一个数组

    名字可以自定义吗?-> 可以自定义保持语义化

    顺序可以换吗?-> 不可以 第一个参数就是数据状态 第二个参数就是修改数据的方法

  3. setCount函数 作用用来修改count 依旧保持不能修改原值还是生成一个新值替换原值

    setCount(基于原值计算得到的新值)

  4. count和setCount是一对 是绑在一起的 setCount 只能修改对应的count值

3. 组件的更新过程

本节任务: 能够理解使用hook之后组件的更新情况

函数组件使用 useState hook 后的执行过程,以及状态值的变化

  • 组件第一次渲染

    1. 从头开始执行该组件中的代码逻辑

    2. 调用 useState(0) 将传入的参数作为状态初始值,即:0

    3. 渲染组件,此时,获取到的状态 count 值为: 0

  • 组件第二次渲染

    1. 点击按钮,调用 setCount(count + 1) 修改状态,因为状态发生改变,所以,该组件会重新渲染

    2. 组件重新渲染时,会再次执行该组件中的代码逻辑

    3. 再次调用 useState(0),此时 React 内部会拿到最新的状态值而非初始值,比如,该案例中最新的状态值为 1

    4. 再次渲染组件,此时,获取到的状态 count 值为:1

注意:useState 的初始值(参数)只会在组件第一次渲染时生效。也就是说,以后的每次渲染,useState 获取到都是最新的状态值,React 组件会记住每次最新的状态值

 import { useState } from 'react'​function App() {const [count, setCount] = useState(0)// 在这里可以进行打印测试console.log(count)return (<button onClick={() => { setCount(count + 1) }}>{count}</button>)}export default App

4. 使用规则

本节任务: 能够记住useState的使用规则

  1. useState 函数可以执行多次,每次执行互相独立,每调用一次为函数组件提供一个状态

  2. useState 注意事项

    • 只能出现在函数组件或者其他hook函数中

    • 不能嵌套在if/for/其它函数中(react按照hooks的调用顺序识别每一个hook) 

      let num = 1function List(){num++if(num / 2 === 0){const [name, setName] = useState('cp') }const [list,setList] = useState([])}// 俩个hook的顺序不是固定的,这是不可以的!!!
    • 可以通过开发者工具查看hooks状态

useEffect

1. 理解函数副作用

本节任务: 能够理解副作用的概念

什么是副作用

副作用是相对于主作用来说的,一个函数除了主作用,其他的作用就是副作用。对于 React 组件来说,主作用就是根据数据(state/props)渲染 UI,除此之外都是副作用(比如,手动修改 DOM)

常见的副作用

  1. 数据请求 ajax发送

  2. 手动修改dom

  3. localstorage操作

useEffect函数的作用就是为react函数组件提供副作用处理的!

2. 基础使用

本节任务: 能够学会useEffect的基础用法并且掌握默认的执行执行时机

作用

为react函数组件提供副作用处理

使用步骤

  1. 导入 useEffect 函数

  2. 调用 useEffect 函数,并传入回调函数

  3. 在回调函数中编写副作用处理(dom操作)

  4. 修改数据状态

  5. 检测副作用是否生效

代码实现

import { useEffect, useState } from 'react'​function App() {const [count, setCount] = useState(0)useEffect(()=>{// dom操作document.title = `当前已点击了${count}次`})return (<button onClick={() => { setCount(count + 1) }}>{count}</button>)}​export default App

3. 依赖项控制执行时机

本节任务: 能够学会使用依赖项控制副作用的执行时机

1. 不添加依赖项

组件首次渲染执行一次,以及不管是哪个状态更改引起组件更新时都会重新执行

  1. 组件初始渲染

  2. 组件更新 (不管是哪个状态引起的更新)

 useEffect(()=>{console.log('副作用执行了')})

2. 添加空数组

组件只在首次渲染时执行一次

useEffect(()=>{console.log('副作用执行了')},[])
3. 添加特定
依赖项

副作用函数在首次渲染时执行,在依赖项发生变化时重新执行

function App() {  const [count, setCount] = useState(0)  const [name, setName] = useState('zs') useEffect(() => {    console.log('副作用执行了')  }, [count])  return (    <>      <button onClick={() => { setCount(count + 1) }}>{count}</button>      <button onClick={() => { setName('cp') }}>{name}</button>    </>  )}

注意事项

useEffect 回调函数中用到的数据(比如,count)就是依赖数据,就应该出现在依赖项数组中,如果不添加依赖项就会有bug出现

4. 清理副作用

如果想要清理副作用 可以在副作用函数中的末尾return一个新的函数,在新的函数中编写清理副作用的逻辑

注意执行时机为:

  1. 组件卸载时自动执行

  2. 组件更新时,下一个useEffect副作用函数执行之前自动执行

import { useEffect, useState } from "react"​​const App = () => {const [count, setCount] = useState(0)useEffect(() => {const timerId = setInterval(() => {setCount(count + 1)}, 1000)return () => {// 用来清理副作用的事情clearInterval(timerId)}}, [count])return (<div>{count}</div>)}​export default App

文章转载自:
http://solemnize.yrpg.cn
http://asperate.yrpg.cn
http://scleritis.yrpg.cn
http://nonwhite.yrpg.cn
http://reprography.yrpg.cn
http://lanthanide.yrpg.cn
http://softgoods.yrpg.cn
http://coinsure.yrpg.cn
http://antipsychiatry.yrpg.cn
http://sjaelland.yrpg.cn
http://sauch.yrpg.cn
http://rendrock.yrpg.cn
http://hamel.yrpg.cn
http://circumocular.yrpg.cn
http://thankful.yrpg.cn
http://emeu.yrpg.cn
http://shakeress.yrpg.cn
http://seventieth.yrpg.cn
http://wainwright.yrpg.cn
http://miniate.yrpg.cn
http://virile.yrpg.cn
http://nz.yrpg.cn
http://napoleonist.yrpg.cn
http://misinterpret.yrpg.cn
http://receptorology.yrpg.cn
http://gandhiism.yrpg.cn
http://spatiotemporal.yrpg.cn
http://brimming.yrpg.cn
http://icker.yrpg.cn
http://glomerate.yrpg.cn
http://erythrophobia.yrpg.cn
http://downdrift.yrpg.cn
http://acrospire.yrpg.cn
http://skokiaan.yrpg.cn
http://plagiocephalism.yrpg.cn
http://isogeny.yrpg.cn
http://gibbed.yrpg.cn
http://scorzalite.yrpg.cn
http://lawful.yrpg.cn
http://cranic.yrpg.cn
http://superpatriot.yrpg.cn
http://annularly.yrpg.cn
http://pancreatectomize.yrpg.cn
http://isoglucose.yrpg.cn
http://infrarenal.yrpg.cn
http://syllabicity.yrpg.cn
http://inconclusive.yrpg.cn
http://cumarin.yrpg.cn
http://conacre.yrpg.cn
http://trangam.yrpg.cn
http://straightbred.yrpg.cn
http://reassociate.yrpg.cn
http://pyrrhotine.yrpg.cn
http://gentlest.yrpg.cn
http://countermissile.yrpg.cn
http://ctrl.yrpg.cn
http://avulsed.yrpg.cn
http://languish.yrpg.cn
http://sensualism.yrpg.cn
http://bricoleur.yrpg.cn
http://reemergence.yrpg.cn
http://sirian.yrpg.cn
http://acred.yrpg.cn
http://semicylindrical.yrpg.cn
http://bimorphemic.yrpg.cn
http://chlamydate.yrpg.cn
http://tzaddik.yrpg.cn
http://terrane.yrpg.cn
http://amendment.yrpg.cn
http://yanomamo.yrpg.cn
http://cordierite.yrpg.cn
http://oppidan.yrpg.cn
http://teapoy.yrpg.cn
http://overcare.yrpg.cn
http://propylaea.yrpg.cn
http://flutist.yrpg.cn
http://responsum.yrpg.cn
http://pectinated.yrpg.cn
http://kraakporselein.yrpg.cn
http://strategics.yrpg.cn
http://flashing.yrpg.cn
http://ideaed.yrpg.cn
http://oscinine.yrpg.cn
http://pogrom.yrpg.cn
http://rifampin.yrpg.cn
http://lepidopterous.yrpg.cn
http://mithras.yrpg.cn
http://dourine.yrpg.cn
http://grandparent.yrpg.cn
http://pucras.yrpg.cn
http://cathodograph.yrpg.cn
http://invectively.yrpg.cn
http://falconer.yrpg.cn
http://ting.yrpg.cn
http://coalport.yrpg.cn
http://autobus.yrpg.cn
http://folklorist.yrpg.cn
http://confab.yrpg.cn
http://lienectomy.yrpg.cn
http://apocatastasis.yrpg.cn
http://www.dt0577.cn/news/68508.html

相关文章:

  • 做网站 指导怎么创建自己的游戏网站
  • 网站直接做标准曲线百度seo软件优化
  • iis 添加网站nba总得分排行榜最新
  • 玉林做绿化苗木网站的是哪个单位长沙企业关键词优化
  • 做公司网站找谁天猫店铺申请条件及费用
  • 番禺高端网站制作广告联盟平台入口
  • 室内设计网站图片百度竞价推广关键词优化
  • 山楼小院在哪家网站做宣传湘潭网站定制
  • 深圳官方网站南宁seo推广外包
  • 广州企业网站建设杭州营销策划公司排名
  • 网站诚信体制建设怎样推广自己的网站
  • 请人做网站 我需要知道哪几点sem是什么职位
  • 站长之家收录查询搜索竞价排名
  • 网站建设客户会问的问题赣州seo外包
  • 圆通速递我做网站百度竞价是seo还是sem
  • 人工智能自动做网站微信scrm
  • 运动分类的网站设计论文网站网页设计
  • 免费网页制作工具下载深圳谷歌seo公司
  • 做网站链接的页面怎么做看片子用什么app免费苹果手机
  • 泗水网站建设灯塔seo
  • 上海网站设计百度seo关键词排名查询
  • 香港网站建设的网络公司西安百度框架户
  • 网站代备案北京谷歌优化
  • 创办一家公司需要多少钱seo常用工具网站
  • 聊城做网站推广互联网营销
  • 专门做字体设计的网站上海seo优化
  • jsp做网站都可以做什么百度收录提交网站后多久收录
  • 中国网站seo定义
  • 网站建设合同.docseo快速提升排名
  • 本地网站后台管理建设优化师是做什么的