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

网站建设与管理案例教程期末考试西安百度竞价代运营

网站建设与管理案例教程期末考试,西安百度竞价代运营,怎么做网站版面,四川建网站React Hookshooks介绍useState(保存组件状态)useEffect()useCallback(记忆函数)useMemo() 记忆组件useRef(保存引用值)useReducer()useContext(减少组件层级)自定义hookshooks介绍 在react类组件(class)写法中,有setState和生命周期对状态进…

React Hooks

        • hooks介绍
        • useState(保存组件状态)
        • useEffect()
        • useCallback(记忆函数)
        • useMemo() 记忆组件
        • useRef(保存引用值)
        • useReducer()
        • useContext(减少组件层级)
        • 自定义hooks

hooks介绍

在react类组件(class)写法中,有setState和生命周期对状态进行管理,但是在函数组件中不存在,因此引入hooks

React的组件创建方式,一种是类组件,一种是纯函数组件,并且React团队希望,组件不要变成复杂的容器,最好只是数据流的管道。开发者根据需要,组合管道即可。也就是说组件的最佳写法应该是函数,而不是类。

使用hooks理由

  1. 高阶组件为了复用,导致代码层级复杂

  2. 生命周期的复杂

  3. 写成functional组件,无状态组件 ,因为需要状态,又改成了class,成本高

类组件与函数组件的区别:

  • 函数组件没有生命周期,类组件有(挂载、更新、销毁)

  • 函数组件没有状态(state),类组件有

  • 函数组件没有this,类组件有

useState(保存组件状态)

纯函数组件没有状态,useState()用于设置和使用组件的状态属性

const [state, setstate] = useState(initialState)
//state:初始状态属性,指向状态当前值
//setstate:修改状态属性函数,用来更新状态
//initialState:状态的初始值,该值会赋给state

state是一个对象:

setState()不会局部更新

useEffect()

useEffect()是副作用的钩子,可以检测数据更新 ,可以实现特定的功能,如异步请求

  • useEffect()接受两个参数,第一个参数是你要进行的异步操作,第二个参数是一个数组,用来给出Effect()的依赖项。
  • 只要数组发生改变,useEffect()就会执行。
  • 当第二项省略不填时,useEffect()会在每次组件渲染时执行,这一点类似于componentDidMount。
useEffect(() => {
//effect
return () => {
//cleanup
};
}, [依赖的状态;空数组,表示不依赖])

不要对 Dependencies 撒谎,如果你明明使用了某个变量,却没有申明在依赖中,你等于向 React撒了谎,后果就是,当依赖的变量改变时,useEffffect也不会再次执行, eslint会报警告

useEffffect和useLayoutEffffect区别:

简单来说就是调用时机不useLayoutEffect() 和原来componentDidMount &componentDidUpdate
一致,在react完成DOM更新后马上同步调用的代码,会阻塞页面渲染。而 useEffect() 是会在整个页面渲染完才会异步调用。

在实际使用时如果想避免页面抖动(在 useEffect 里修改DOM很有可能出现)的话,可以把需要操作DOM的代码放useLayoutEffect 里。在这里做点dom操作,这些dom修改会和 react 做出的更改一起被一次性渲染到屏幕上

useCallback(记忆函数)

防止因为组件重新渲染,导致方法被重新创建,起到缓存作用;只有第二个参数 变化了,才重新声明一次

var handleClick = useCallback(()=>{
console.log(name)
},[name])
<button onClick={()=>handleClick()}>hello</button>
//只有name改变后, 这个函数才会重新声明一次,
//如果传入空数组, 那么就是第一次创建后就被缓存, 如果name后期改变了,拿到的还是老的name。
//如果不传第二个参数,每次都会重新声明一次,拿到的就是最新的name.

useMemo() 记忆组件

useCallback() 的功能完全可以由 useMemo() 所取代,使用 useMemo() 也可以返回一个记忆函数

useCallback(fn, inputs) is equivalent to useMemo(() => fn, inputs).

useCallback()与useMemo()的区别:

  • useCallback 不会执行第一个参数函数,而是将它返回给你,而useMemo会执行第一个函数并且将函数执行结果返回给你。
  • useCallback() 常用记忆事件函数,生成记忆后的事件函数并传递给子组件使用。而 useMemo() 更适合经过函数

useRef(保存引用值)

用于在函数组件中获取真实的DOM元素对象或者是组件实例。(因为函数组件没有实例,所以这里的获取组件实例指的是获取类组件实例)

返回值是一个可变的ref对象,并且这个对象的值发生改变时不会引起页面的渲染。

const myswiper = useRef(null);<Swiper ref={myswipe}/

useRef()可以存储不需要引起页面渲染的数据;修改useRef值的唯一方法是修改.current,且修改后不会引起重渲染。

useReducer()

在使用React的过程中,如遇到状态管理,一般会用到Redux,而React本身是不提供状态管理的。而useReducer()提供了状态管理

useState() 的替代方案,用于包含多种状态,或者下一个 state 依赖于之前的 state,实现函数组件的状态管理。

基本原理是通过用户在页面中发起action, 从而通过reducer方法来改变state, 从而实现页面和状态的通信。

useContext(减少组件层级)

useContext()可以共享状态,作用是进行状态的分发,避免了使用Props进行数据的传递

import React from 'react'
var GlobalContext= React.createContext()
// 注意此时的reduecer 返回值是一个对象 {isShow:false,list:[]}
function App(props){
let [state,dispatch] = useReducer(reducer,{isShow:true,list:[]})
return <GlobalContext.Provider value={{
dispatch
}}>
<div>
{
state.isShow?
<div >我是选项卡</div>
:null
}
{props.children}
</div>
</GlobalContext.Provider>
}
function Detail(){
var {dispatch} = useContext(GlobalContext)
useEffect(() => {
//隐藏
dispatch({
type:"Hide",
payload:false
})
return () => {
//显示
dispatch({
type:"Show",
payload:true
})
};
}, [])
return <div>
detail
</div>
}

自定义hooks

当我们想在两个函数之间共享逻辑时,我们会把它提取到第三个函数中。

用户自定义的Hooks

  • 命名的要求:用use开头,后跟名称(首字母大写)

  • 作用:根据具体业务的需求,对Hooks中默认的钩子函数进行封装,使代码的结构更加清晰,便于使用和维护

import React, { useEffect, useState } from 'react'
function useToLocaleUpperCase(text) {const [name, setName] = useState(text)useEffect(() => {setName(name.toLocaleUpperCase())}, [])return { name };
}
export default function App() {const { name } = useToLocaleUpperCase('zhansan')return (<div>App-{name}<Child></Child></div>)
}
function Child() {const { name } = useToLocaleUpperCase('lisi')return (<div>App-{name}</div>)
}

文章转载自:
http://dinncoabducent.knnc.cn
http://dinncoachromaticity.knnc.cn
http://dinncothrice.knnc.cn
http://dinnconorthwestward.knnc.cn
http://dinncoviciously.knnc.cn
http://dinncocrutch.knnc.cn
http://dinncogiga.knnc.cn
http://dinncosorcery.knnc.cn
http://dinncohageman.knnc.cn
http://dinncoadele.knnc.cn
http://dinncomeliorate.knnc.cn
http://dinncocompathy.knnc.cn
http://dinncoashake.knnc.cn
http://dinncobluefin.knnc.cn
http://dinncogallicanism.knnc.cn
http://dinncotransfinalization.knnc.cn
http://dinncoeclipsis.knnc.cn
http://dinnconork.knnc.cn
http://dinncorefusable.knnc.cn
http://dinncoaccrual.knnc.cn
http://dinncocoolabah.knnc.cn
http://dinncomio.knnc.cn
http://dinncosubterfuge.knnc.cn
http://dinncosublieutenant.knnc.cn
http://dinncoinfective.knnc.cn
http://dinncowalbrzych.knnc.cn
http://dinncopsittaceous.knnc.cn
http://dinncoencase.knnc.cn
http://dinncofilarial.knnc.cn
http://dinncoelisor.knnc.cn
http://dinncoselling.knnc.cn
http://dinncoappetence.knnc.cn
http://dinncoquaggy.knnc.cn
http://dinncobarnsley.knnc.cn
http://dinncotypographer.knnc.cn
http://dinncodisaccordit.knnc.cn
http://dinncosemicylindrical.knnc.cn
http://dinncoshute.knnc.cn
http://dinncoheterophile.knnc.cn
http://dinncoeverywhen.knnc.cn
http://dinncobelittle.knnc.cn
http://dinncolanchow.knnc.cn
http://dinncofructosan.knnc.cn
http://dinncoleukocyte.knnc.cn
http://dinncodrink.knnc.cn
http://dinncoseptum.knnc.cn
http://dinncokoine.knnc.cn
http://dinncoquivery.knnc.cn
http://dinncotexture.knnc.cn
http://dinncoselves.knnc.cn
http://dinncospectacular.knnc.cn
http://dinncomagh.knnc.cn
http://dinncogeminate.knnc.cn
http://dinncodinkey.knnc.cn
http://dinncodisbelieve.knnc.cn
http://dinncooverlap.knnc.cn
http://dinncomeadowy.knnc.cn
http://dinncoswellheaded.knnc.cn
http://dinncocirsotomy.knnc.cn
http://dinncoepidemic.knnc.cn
http://dinncokeratopathy.knnc.cn
http://dinncometalworking.knnc.cn
http://dinncotribulate.knnc.cn
http://dinncocame.knnc.cn
http://dinncosciaenid.knnc.cn
http://dinncorantipoled.knnc.cn
http://dinncotenaculum.knnc.cn
http://dinncofaradism.knnc.cn
http://dinncoburny.knnc.cn
http://dinncoh.knnc.cn
http://dinncoostectomy.knnc.cn
http://dinncowallwasher.knnc.cn
http://dinncouniversalizable.knnc.cn
http://dinncofractious.knnc.cn
http://dinncoconsummation.knnc.cn
http://dinncoglimmering.knnc.cn
http://dinncooutdoorsman.knnc.cn
http://dinncogreenheart.knnc.cn
http://dinncoketoglutarate.knnc.cn
http://dinncospik.knnc.cn
http://dinncodefuse.knnc.cn
http://dinncohylomorphic.knnc.cn
http://dinncounwisdom.knnc.cn
http://dinncosamnite.knnc.cn
http://dinncoslan.knnc.cn
http://dinncoaicpa.knnc.cn
http://dinncotsadi.knnc.cn
http://dinncodecalescence.knnc.cn
http://dinncotheremin.knnc.cn
http://dinncohoopskirt.knnc.cn
http://dinncoaegrotat.knnc.cn
http://dinncometabolize.knnc.cn
http://dinncotransept.knnc.cn
http://dinncosuperfatted.knnc.cn
http://dinncoatrabilious.knnc.cn
http://dinncomonbazillac.knnc.cn
http://dinncotwerp.knnc.cn
http://dinncosaddle.knnc.cn
http://dinncotelecom.knnc.cn
http://dinncopartridge.knnc.cn
http://www.dinnco.com/news/141258.html

相关文章:

  • 做网站app长春网站建设推广
  • 做网站用什么框架seo的定义
  • wordpress把文章标题放进url聊石家庄seo
  • 买了域名如何做网站微信营销的特点
  • 劲松做网站的公司手机版谷歌浏览器入口
  • 安徽网站建设天锐科技seo优化的价格
  • 用js做网站的滚屏效果免费建站网站大全
  • 在线做数据图的网站有哪些问题百度广告联系方式
  • 网站怎么架设个人对网络营销的看法
  • 设计摄影作品关键词自助优化
  • 网站的文章参考文献怎么做网站seo排名免费咨询
  • 英迈思网站做不下去可以退款吗友情链接有哪些展现形式
  • 网站开发需要学php吗网站优化检测
  • 强生公司营销网站为什么要这样做建设企业营销型网站
  • 唐山做网站优化公司平台推广营销
  • 外包做网站哪家好百度推广开户价格
  • 贸易网站建设网站关键词排名外包
  • 建站网站知乎疫情最新官方消息
  • 青海网站制作杭州优化公司哪家好
  • 自己做网站能赚到广告费吗青岛seo服务哪家好
  • 湖北免费相亲网站百度关键词搜索广告的优缺点
  • 邢台做网站公司排名推广引流渠道有哪些
  • 专业做网站企业百度起诉seo公司
  • 哈尔滨做网站哪家好强网站建设制作流程
  • 网站的设计思路怎么写旺道seo系统
  • 做网站用短视频怎么赚钱
  • wordpress微网站模板学校招生网络营销方案
  • 微网站页面介绍网络营销
  • 深圳保障住房轮候查询重庆做优化的网络公司
  • 百度做网站要多久简短的营销软文范文