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

陕西专业网站开发公司网站快速排名技巧

陕西专业网站开发公司,网站快速排名技巧,微信凡科互动黑了咋办,自建网站有哪些一、useContext的使用 在之前的开发中#xff0c;我们要在组件中使用共享的Context有两种方式#xff1a; 第一种方式#xff1a;类组件可以通过 类名.contextType MyContext方式#xff0c;在类中获取context#xff1b; 第二种方式#xff1a;多个Context或者在函数…一、useContext的使用 在之前的开发中我们要在组件中使用共享的Context有两种方式 第一种方式类组件可以通过 类名.contextType MyContext方式在类中获取context 第二种方式多个Context或者在函数式组件中通过 MyContext.Consumer 方式共享context 但是多个Context共享时的方式会存在大量的嵌套 import React, {createContext, useState} from react; import CounterClass from ./01-体验hooks/01-counter_class import CounterHook from ./01-体验hooks/02-counter-hook import CounterHook2 from ./01-体验hooks/03-counter-hook import MultiHookState from ./02-useState的使用/01-多个状态和复杂状态; import ComplexHookState from ./02-useState的使用/02-复杂状态的修改 import ClassCounterChange from ./03-useEffect的使用/01-class实现title的修改 import HookCounterChange from ./03-useEffect的使用/02-hook实现title的修改 import EffectHookCancelDemo from ./03-useEffect的使用/03-useEffect模拟订阅和取消订阅 import MultiEffectHookDemo from ./03-useEffect的使用/04-多个useEffect一起使用 import ContextHookDemo from ./04-useContext的使用/01-useContext的使用 export const UserContext createContext() export const ThemeContext createContext() function App() {const [show, setShow] useState(true)return (div{/*CounterClass /*/}{/*CounterHook /*/}{/*CounterHook2 /*/}{/*MultiHookState /*/}{/*ComplexHookState /*/}{/*ClassCounterChange /*/}{/*HookCounterChange /*/}{/*{show EffectHookCancelDemo /}*/}{/*button onClick{e setShow(!show)}切换/button{show MultiEffectHookDemo /}*/}UserContext.Provider value{{name: why, age: 18}}ThemeContext.Provider value{{fontSize: 30px, color: red}}ContextHookDemo//ThemeContext.Provider/UserContext.Provider/div) } export default App import React from react; import {UserContext, ThemeContext} from ../App; export default function ContextHookDemo() {return (divUserContext.Consumer{user {return (ThemeContext.Consumer{theme {return (divdiv用户昵称{user.name}/divdiv年龄{user.age}/divh2颜色{theme.color}/h2/div)}}/ThemeContext.Consumer)}}/UserContext.Consumer/div) } Context Hook允许我们通过Hook来直接获取某个Context的值 注意事项 当组件上层最近的 MyContext.Provider 更新时该 Hook 会触发重新渲染并使用最新传递给 MyContext provider 的 context value 值。 二、useReducer 很多人看到useReducer的第一反应应该是redux的某个替代品其实并不是。 useReducer仅仅是useState的一种替代方案 在某些场景下如果state的处理逻辑比较复杂我们可以通过useReducer来对其进行拆分或者这次修改的state需要依赖之前的state时也可以使用 import React, {useState, useReducer} 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}default:return state} }export default function Home() {// const [count, setCount] useState(0)const [state, dispatch] useReducer(reducer, {counter: 0})return (divh2Home当前计数{state.counter}/h2button onClick{e {dispatch({type: increment})}}1/buttonbutton onClick{e {dispatch({type: decrement})}}-1/button/div/*divh2Home当前计数{count}/h2button onClick{e {setCount(count 1)}}1/buttonbutton onClick{e {setCount(count - 1)}}-1/button/div*/) } 数据是不会共享的它们只是使用了相同的counterReducer的函数而已。 所以useReducer只是useState的一种替代品并不能替代Redux。 三、useCallback useCallback实际的目的是为了进行性能的优化。 如何进行性能的优化呢 useCallback会返回一个函数的 memoized记忆的 值在依赖不变的情况下多次定义的时候返回的值是相同的 案例一使用useCallback和不使用useCallback定义一个函数是否会带来性能的优化答案不能因为两者都需要进行函数的创建国出 案例二使用useCallback和不使用useCallback定义一个函数传递给子组件是否会带来性能的优化 以下为未使用useCallback的情况 以下为使用useCallback的情况 通常使用useCallback的目的是不希望子组件进行多次渲染并不是为了函数进行缓存 import React, {memo, useCallback, useState} from react;const HYButton memo((props) {console.log(HYButton重新渲染: props.title)return button onClick{props.increment} HYButton 1/button }) export default function CallbackHookDemo02() {console.log(CallbackHookDemo02重新渲染了)const [count, setCount] useState(0)const [show, setShow] useState(true)const increment1 () {console.log(执行increment函数)setCount(count 1)}const increment2 useCallback(() {console.log(执行increment函数)setCount(count 1)}, [count])return (divh2CallbackHookDemo02: {count}/h2HYButton titlebtn1 increment{increment1} /HYButton titlebtn2 increment{increment2} /button onClick{e setShow(!show)}show切换/button{/*button onClick{increment1}1/buttonbutton onClick{increment2}1/button*/}/div) } 四、useMemo useMemo实际的目的也是为了进行性能的优化。 如何进行性能的优化呢 useMemo返回的也是一个 memoized记忆的 值在依赖不变的情况下多次定义的时候返回的值是相同的 案例 案例一进行大量的计算操作是否有必须要每次渲染时都重新计算 答案每次渲染时都重新计算了 import React, {useMemo, useState} from react;function calcNumber(count) {let total 0for (let i 1; i count; i) {total i}console.log(for循环执行了)return total } export default function MemoHookDemo01() {const [count, setCount] useState(10)const [show, setShow] useState(true)const total useMemo(() {return calcNumber(count)}, [count])return (divh2计算数字的累加和{total}/h2button onClick{e setCount(count 1)}1/buttonbutton onClick{e setShow(!show)}show切换/button/div) } 案例二对子组件传递相同内容的对象时使用useMemo进行性能的优化 五、useMemo和useCallback的区别
http://www.pierceye.com/news/684295/

相关文章:

  • 数据库对于做网站的重要性商城模板网站模板
  • 梧州高端网站建设服务企业网站建设源码
  • 团购网站优化德州seo排名
  • 网站首页引导页中文简洁网站设计图
  • 娱乐网站排行榜在线商城网站开发代码
  • 手机网站设计通用尺寸上海外贸人才网
  • 智慧团建网站密码格式高端终端网站设计类网站
  • 福田网站设计网站建设平台方案
  • 荆州企业网站建设天津网站优化步骤
  • 网站怎么怎么做关键字长沙网站建设q.479185700強
  • 网站备案万网excel做网站
  • 十堰网站建设怎么做桐乡网站设计
  • 织梦商城网站模板网站设计的逻辑结构
  • 网站编辑器福建省工程建设信息官方网站
  • 网站的域名能修改么做设计网站的工作
  • 珠海选车牌号网站系统icp对网站内容
  • 东莞购物网站如何建立免费个人网站
  • 网站个别页面做seo建立有效的什么机制
  • 学校网站建设模板wordpress 年月归档
  • 凡科做的网站行不行京东慧采入驻条件及费用2023年
  • 汽车网站建设页面网站建设营销公司
  • 可以写代码的网站有哪些问题微信公众号的推广
  • 网站建设项目怎么写新网站一般多久收录
  • 什么网站可以免费发广告合肥做网站一般多少钱
  • 企业网站优化的方式大安市网站
  • 镇江专业网站建设制作wordpress调查插件
  • 桂林网站制作多少钱最好的网站开发公司
  • 广州网站开发公司排名广州从化建设网站官网
  • 网站备案在杭州注册公司需要什么条件
  • 购买域名做销售网站可以吗河北邢台刚刚发布的紧急通知