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

网站流量运营招聘门户网站是什么意思

网站流量运营,招聘门户网站是什么意思,网站欢迎框代码,旅游网站建设目标网站分类16.1 useEffect Effect Hook 可以让你来完成一些类似于class中生命周期的功能; 事实上,类似于网络请求、手动更新DOM、一些事件的监听,都是React更新DOM的一些副作用(Side Effects);所以对于完成这些功能…

16.1 useEffect

Effect Hook 可以让你来完成一些类似于class中生命周期的功能;

  • 事实上,类似于网络请求、手动更新DOM、一些事件的监听,都是React更新DOM的一些副作用(Side Effects);
  • 所以对于完成这些功能的Hook被称之为 Effect Hook;
import React, { useState, useEffect } from 'react';function UseEffectDemo() {const [counter, setCounter] = useState(0);useEffect(() => {document.title = "Counter" + counter;});return (<div><h1>Counter: {counter}</h1><button onClick={() => setCounter(counter + 1)}>Increment</button></div>);
}export default UseEffectDemo;

useEffect的清除:

在class组件的编写过程中,某些副作用的代码,我们需要在componentWillUnmount中进行清除:

  • 比如我们之前的事件总线或Redux中手动调用subscribe;
  • 都需要在componentWillUnmount有对应的取消订阅;
  • Effect Hook通过什么方式来模拟componentWillUnmount呢?

useEffect传入的回调函数A本身可以有一个返回值,这个返回值是另外一个回调函数B:
为什么要在 effect 中返回一个函数?
这是 effect 可选的清除机制。每个 effect 都可以返回一个清除函数;

  • 如此可以将添加和移除订阅的逻辑放在一起;
  • 它们都属于 effect 的一部分;

React 何时清除 effect?

  • React 会在组件更新和卸载的时候执行清除操作;
  • 正如之前学到的,effect 在每次渲染的时候都会执行;

useEffect实际上有两个参数:

  • 参数一:执行的回调函数;
  • 参数二:该useEffect在哪些state发生变化时,才重新执行;(受谁的影响)

16.2 useContext

Context Hook允许我们通过Hook来直接获取某个Context的值;

App.js定义共享

export const userContext = createContext();
export const ThemContext = createContext();

App.js还是需要包裹

function App() {return (<div className="App">{/* <UseCounter /><MoreState /> */}{/* <UseEffectDemo /> */}<userContext.Provider value={{ name: "里斯" }}><ThemContext.Provider value={{ theme: "dark" }}><UserContextDemo /></ThemContext.Provider></userContext.Provider></div>);
}

使用(超简单)

import React, { useContext } from 'react'
import { userContext } from './App'export default function UserContextDemo() {const { name } = useContext(userContext);return <div>用户名:{name}</div>
}

16.3 useReducer

useReducer仅仅是useState的一种替代方案:

  • 在某些场景下,如果state的处理逻辑比较复杂,我们可以通过useReducer来对其进行拆分;
  • 或者这次修改的state需要依赖之前的state时,也可以使用;

使用计数来举个例子:

import React, { PureComponent, useReducer } from 'react'// 定义reducer函数,接收state和action,根据action.type返回新的state
function reducer(state, action) {switch (action.type) {case 'INCRESE': // 增加return { count: state.count + 1 };case 'DECRESE': // 减少return { count: state.count - 1 };default:throw new Error(); // 未知action抛出错误}
}export default function UseReducer() {// 定义初始状态const initialState = {count: 0}// useReducer返回当前state和dispatch方法const [state, dispatch] = useReducer(reducer, initialState);return (<div>{/* 显示当前count */}<h2>number{state.count}</h2>{/* 点击按钮派发INCRESE和DECRESE action */}<button onClick={() => dispatch({ type: 'INCRESE' })}> + 1</button><button onClick={() => dispatch({ type: 'DECRESE' })}> - 1</button></div>)
}

16.4 useCallBack

useCallback实际的目的是为了进行性能的优化。
如何进行性能的优化呢?

  1. useCallback会返回一个函数的 memoized(记忆的) 值;
  2. 在依赖不变的情况下,多次定义的时候,返回的值是相同的;

16.5 useMemo

useMemo返回的也是一个 memoized(记忆的)
在依赖不变的情况下,多次定义的时候,返回的值是相同的;

16.1 useEffect

Effect Hook 可以让你来完成一些类似于class中生命周期的功能;

  • 事实上,类似于网络请求、手动更新DOM、一些事件的监听,都是React更新DOM的一些副作用(Side Effects);
  • 所以对于完成这些功能的Hook被称之为 Effect Hook;
import React, { useState, useEffect } from 'react';function UseEffectDemo() {const [counter, setCounter] = useState(0);useEffect(() => {document.title = "Counter" + counter;});return (<div><h1>Counter: {counter}</h1><button onClick={() => setCounter(counter + 1)}>Increment</button></div>);
}export default UseEffectDemo;

useEffect的清除:

在class组件的编写过程中,某些副作用的代码,我们需要在componentWillUnmount中进行清除:

  • 比如我们之前的事件总线或Redux中手动调用subscribe;
  • 都需要在componentWillUnmount有对应的取消订阅;
  • Effect Hook通过什么方式来模拟componentWillUnmount呢?

useEffect传入的回调函数A本身可以有一个返回值,这个返回值是另外一个回调函数B:
为什么要在 effect 中返回一个函数?
这是 effect 可选的清除机制。每个 effect 都可以返回一个清除函数;

  • 如此可以将添加和移除订阅的逻辑放在一起;
  • 它们都属于 effect 的一部分;

React 何时清除 effect?

  • React 会在组件更新和卸载的时候执行清除操作;
  • 正如之前学到的,effect 在每次渲染的时候都会执行;

useEffect实际上有两个参数:

  • 参数一:执行的回调函数;
  • 参数二:该useEffect在哪些state发生变化时,才重新执行;(受谁的影响)

16.2 useContext

Context Hook允许我们通过Hook来直接获取某个Context的值;

App.js定义共享

export const userContext = createContext();
export const ThemContext = createContext();

App.js还是需要包裹

function App() {return (<div className="App">{/* <UseCounter /><MoreState /> */}{/* <UseEffectDemo /> */}<userContext.Provider value={{ name: "里斯" }}><ThemContext.Provider value={{ theme: "dark" }}><UserContextDemo /></ThemContext.Provider></userContext.Provider></div>);
}

使用(超简单)

import React, { useContext } from 'react'
import { userContext } from './App'export default function UserContextDemo() {const { name } = useContext(userContext);return <div>用户名:{name}</div>
}

16.3 useReducer

useReducer仅仅是useState的一种替代方案:

  • 在某些场景下,如果state的处理逻辑比较复杂,我们可以通过useReducer来对其进行拆分;
  • 或者这次修改的state需要依赖之前的state时,也可以使用;

使用计数来举个例子:

import React, { PureComponent, useReducer } from 'react'// 定义reducer函数,接收state和action,根据action.type返回新的state
function reducer(state, action) {switch (action.type) {case 'INCRESE': // 增加return { count: state.count + 1 };case 'DECRESE': // 减少return { count: state.count - 1 };default:throw new Error(); // 未知action抛出错误}
}export default function UseReducer() {// 定义初始状态const initialState = {count: 0}// useReducer返回当前state和dispatch方法const [state, dispatch] = useReducer(reducer, initialState);return (<div>{/* 显示当前count */}<h2>number{state.count}</h2>{/* 点击按钮派发INCRESE和DECRESE action */}<button onClick={() => dispatch({ type: 'INCRESE' })}> + 1</button><button onClick={() => dispatch({ type: 'DECRESE' })}> - 1</button></div>)
}

16.4 useCallBack

useCallback实际的目的是为了进行性能的优化。
如何进行性能的优化呢?

  1. useCallback会返回一个函数的 memoized(记忆的) 值;
  2. 在依赖不变的情况下,多次定义的时候,返回的值是相同的;

16.5 useMemo

useMemo返回的也是一个 memoized(记忆的)
在依赖不变的情况下,多次定义的时候,返回的值是相同的;


文章转载自:

http://uutDeQ6d.txzmy.cn
http://RGDMBlDN.txzmy.cn
http://RYkFtHNH.txzmy.cn
http://CaJQxqrI.txzmy.cn
http://blMMsGYJ.txzmy.cn
http://j8Oz0axk.txzmy.cn
http://24DT3wX5.txzmy.cn
http://MyXObYuA.txzmy.cn
http://AxCMfAKw.txzmy.cn
http://ZQBa2rae.txzmy.cn
http://Ev0OszlL.txzmy.cn
http://Ck0bIeuT.txzmy.cn
http://E5wSFVMk.txzmy.cn
http://EoPrQwsk.txzmy.cn
http://GIEpHpvr.txzmy.cn
http://pxYznyOS.txzmy.cn
http://ICL6MNHZ.txzmy.cn
http://Swd8u1HS.txzmy.cn
http://cPKpRS2c.txzmy.cn
http://SsPqiywQ.txzmy.cn
http://U8iuPNR9.txzmy.cn
http://dpnq8hwn.txzmy.cn
http://8SugpigF.txzmy.cn
http://FV6GiUqw.txzmy.cn
http://VywmSQB5.txzmy.cn
http://i3T5ej6n.txzmy.cn
http://iSLsOsjy.txzmy.cn
http://xyxjjw8w.txzmy.cn
http://5pJcEYNz.txzmy.cn
http://6Z6cXD9v.txzmy.cn
http://www.dtcms.com/wzjs/737163.html

相关文章:

  • 国外网站搭建平台网站如何被谷歌收录
  • 那些网站可以做文案兼职郑州免费自助建站模板
  • wordpress视频站模板下载如何在头条上做网站推广
  • 南宁企业如何建网站怎么做cpa网站
  • p2p网站的建设wordpress文字字幕
  • 一级a做网站免费线上营销推广公司
  • 腾讯建设网站视频迅雷2t免费空间活动
  • 子午谷网站建设有哪些搜索引擎
  • 网站排名优化培训课程网络维护费
  • 网站建设的需求客户wordpress 调用页面列表
  • 网站建设脱颖而出wordpress一直加载插件
  • 怎么做网站文字图片长沙装修公司招聘网
  • 江苏省住房和建设厅网站个人网站推广广告
  • 微信做模板下载网站设计手机访问的网站
  • 网站开发最快的语言2017年做啥网站致富
  • 免费w网站建设软件技术的发展前景
  • 网站建设吸引人的话语慈溪网站优化
  • 建设银行海门支行网站wordpress add_post_meta
  • 专业网站建设信息河南企起网站建设
  • 西部数码空间的网站访问统计牛商网做网站怎么样
  • wordpress没有找到站点固定ip 建网站
  • 华茂达建设集团网站三个字的洋气商标名字
  • 买卖网站金融课程网站模板下载
  • 珠海市企业网站制作品牌wordpress js加载慢
  • 阿玛尼手表官方网站查询正品怎么做自助交易网站
  • 帮助网站源码华为外包公司排名
  • 宁波建站价格dw做网站怎么设置页面音乐
  • 长沙网站建设 599中囯军事网
  • 后端网站开发培训百度快速优化排名软件
  • 文化馆网站建设解决方案潍坊大型做网站建设的公司