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

陕西建设厅八大员官方网站房地产网站建设分析

陕西建设厅八大员官方网站,房地产网站建设分析,企业网站排名要怎么做,企业网站维护的要求包括React 基础巩固(四十四)——其他Hooks#xff08;useContext、useReducer、useCallback#xff09; 一、useContext的使用 在类组件开发时#xff0c;我们通过 类名.contextType MyContext的方式#xff0c;在类中获取context#xff0c;多个Context或者在函数式组件中…React 基础巩固(四十四)——其他HooksuseContext、useReducer、useCallback 一、useContext的使用 在类组件开发时我们通过 类名.contextType MyContext的方式在类中获取context多个Context或者在函数式组件中通过MyContext.Consumer方式共享context import React, { memo } from react import { UserContext, ThemeContext } from ./contextexport default memo(function App() {// 使用Contextreturn (divUserContext.Consumer{value {return (h2ThemeContext.Consumer{value {span/span}}/ThemeContext.Consumer/h2)}}/UserContext.Consumer/div) }) 可以看到当我们需要使用多个Context时存在大量繁琐的嵌套代码而Context Hook能够让我们通过Hook直接获取某个Context的值如下 import React, { memo, useContext } from react; import { ThemeContext, UserContext } from ./context;export default memo(function App() {// 使用Contextconst user useContext(UserContext);const theme useContext(ThemeContext);return (divh2User: {user.name} - {user.age}/h2h2Theme: {theme.color} - {theme.size}/h2/div); }); 可以看到Context Hook仅用了两行代码就替代了上面繁杂的嵌套代码十分高效简洁。 二、useReducer的使用 useReducer是useState的一种替代方案当state的处理逻辑比较复杂可以使用useReducer来进行拆分或者当修改state时需要依赖之前的state时也可以使用useReducer。 useReducer使用的场景非常少通常用于需要统一管理、修改多个数据的场景。例如当我们需要对多个数据进行统一处理时若采用useState则需要多次定义而reducer可以对其进行统一定义、修改 import React, { memo, useReducer, useState } from react;function reducer(state, action) {switch (action.type) {case increment:return { ...state, counter: state.counter 1 };case decrement:return { ...state, counter: state.counter - 1 };case add_number:return { ...state, counter: state.counter action.num };case sub_number:return { ...state, counter: state.counter - action.num };default:return state;} }export default memo(function App() {// const [count, setCount] useState(0);// const [user, setUser] useState(0);// const [list, setList] useState(0);const [state, dispatch] useReducer(reducer, {counter: 0,user: {},list: [],});return (div{/* h2当前计数{count}/h2button onClick{(e) setCount(count 1)}1/buttonbutton onClick{(e) setCount(count - 1)}-1/buttonbutton onClick{(e) setCount(count 5)}5/buttonbutton onClick{(e) setCount(count - 5)}-5/buttonbutton onClick{(e) setCount(count 100)}100/button */}h2当前计数{state.counter}/h2button onClick{(e) dispatch({ type: increment })}1/buttonbutton onClick{(e) dispatch({ type: decrement })}-1/buttonbutton onClick{(e) dispatch({ type: add_number, num: 5 })}5/buttonbutton onClick{(e) dispatch({ type: sub_number, num: 5 })}-5/buttonbutton onClick{(e) dispatch({ type: add_number, num: 100 })}100/button/div); }); 三、useCallback的使用 useCallback实际的目的是为了进行性能优化useCallback会返回一个函数的memoized记忆的值。在依赖不变的情况下多次定义的时候返回的值时相同的。 useCallback的性能优化 当需要将一个函数传递给子组件时可使用useCallback进行优化将优化之后的函数传递给子组件 import React, { memo, useCallback, useState } from react;const HYIncrement memo(function (props) {const { increment } props;console.log(HYIncrement被渲染);return (divbutton onClick{increment}increment 1/button/div); });export default memo(function App() {const [count, setCount] useState(0);const [message, setMessage] useState(hello);// 使用useCallbackconst increment useCallback(function () {setCount(count 1);},[count]);// 普通函数// const increment () {// setCount(count 1);// };return (divh2计数{count}/h2button onClick{increment}1/buttonHYIncrement increment{increment} /h2message{message}/h2button onClick{(e) setMessage(world)}修改 message/button/div); }); 进一步优化 当count发生改变时也使用同一个函数 // 做法一将count依赖移除掉缺点存在闭包陷阱不依赖count后setCount每次拿到的count并非最新的count// const increment useCallback(function foo() {// console.log(increment);// setCount(count 1);// }, []);// 做法二利用useRef在组件多次渲染时返回同一个值const countRef useRef();countRef.current count;const increment useCallback(function foo() {console.log(increment);setCount(countRef.current 1);},[]);
http://www.zqtcl.cn/news/446095/

相关文章:

  • 网站怎么发布做微商wordpress 主页显示多图
  • 国外做宠物用品的网站安徽网新科技有限公司官网
  • 辣条类网站建设规划书南阳网站推广优化公司
  • 帝国网站做地域标签seo关键词排名查询
  • 西安网站建设xs029免费代理ip最新
  • 网站建设不挣钱海盐建设局网站
  • 潍坊做网站张家口最近一个月的热点事件
  • 套模板的网站多少钱公司付的网站费怎么做分录
  • 做ps找图的网站有哪些响应式设计是什么意思
  • 家教网站建设的推广猪八戒网站做私活赚钱吗
  • 男女做那种的视频网站asp.net做网站怎么样
  • 给企业做网站怎么收钱郑州网站顾问
  • readme.md做网站设计网页的快捷网站
  • 做双语网站用什么cms系统好百度后台管理
  • 什么网站可以做试卷企业的oa管理系统
  • 经典网站模板自己做pc网站建设
  • 网站有源码之后怎么建设网站河北加工活外发加工网
  • 什么网站可以做自媒体外包小程序
  • 建网站_网站内容怎么做网络营销的广告形式
  • 静态网站怎么做留言板关键词有哪些
  • 开发软件自学步骤朝阳seo推广
  • Wordpress有用么网络推广seo怎么做
  • 企业做网站的注意事项深圳市建网站
  • 代做网站关键词怎么自创网页
  • 网站建设资金申请报告深圳物流公司收费标准
  • 全能企业网站管理系统做教案比较好的网站
  • 昆明做网站竞价单页营销型网站建设
  • 网站注销备案查询厦门好的做网站公司
  • 大学生兼职网站做ppt数字化营销模式及特点
  • 网站虚拟主机1gwordpress自定义头像插件