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

公司网站欢迎语线上宣传的方式

公司网站欢迎语,线上宣传的方式,网站输入卡密提取怎么做,招聘 人才招聘作用 配合函数式编程,保证在不产生类的时候完成一个整体的组件 常用组件 useStateuseContextuseReduceruseEffectuseMemouseCallback 前三个值为自变量 后三者为因变量 前三者相当于其他编程函数的变量声明,而后三者相当于对变量进行了(if now ! pr…

作用

配合函数式编程,保证在不产生类的时候完成一个整体的组件

常用组件

  1. useState
  2. useContext
  3. useReducer
  4. useEffect
  5. useMemo
  6. useCallback

前三个值为自变量
后三者为因变量

前三者相当于其他编程函数的变量声明,而后三者相当于对变量进行了(if now != previous)的包装,执行函数

useState

适用于:简单逻辑状态管理

//创建
const [state, setState] = useState(defaultState)//直接修改
setState(nextState);
// 函数修改,会接收到一个参数是原先 state 的值,该函数的返回值将作为更新后 state 的值
setState(preState => nextState);

useReducer

用于处理更复杂的状态逻辑。相比于 useState,它更适合用于处理涉及多个子值的状态,或者下一个状态依赖于之前的状态的情况

// 定义初始状态
const initialState = { count: -1 };
//初始化函数
function init(initial) {// 确保初始计数值为正数return { count: Math.abs(initial.count) };
}
// 定义 reducer 函数
function counterReducer(state, action) {switch (action.type) {case 'increment':return { count: state.count + 1 };case 'decrement':return { count: state.count - 1 };case 'reset':return initialState;default:throw new Error();}
}
}// 在组件中使用
function Counter() {const [state, dispatch] = useReducer(counterReducer, initialState, init);//第三个参数可以传入函数,这个函数允许你自定义初始化逻辑,而不是直接使用第二个参数 initialState作为初始状态(对第二个参数进行预处理,如取abs)。当你需要对初始状态进行一些计算或处理时return (<div><p>Count: {state.count}</p><button onClick={() => dispatch({ type: 'increment' })}>+1</button><button onClick={() => dispatch({ type: 'decrement' })}>-1</button><button onClick={() => dispatch({ type: 'reset' })}>Reset</button></div>);
}

·

useContext

和props的区别

  1. Props 是父组件向子组件传递数据的一种方式,从上往下传递,
  2. useContext 是一个 React Hook,允许你订阅 React 的 Context 对象。Context 提供了一种在组件之间共享数据的方式

作用
Props 主要用于父子组件之间的通信,而 useContext 解决了跨层级组件间的数据共享问题。如果组件层次较深,为了将某个 prop 从根组件传递到深层嵌套的组件,可能需要在每一层中间组件中“透传”这个 prop(即使这些中间组件并不使用该 prop),这被称为“prop drilling“ 使用useContext可以避免prop drilling
过度依赖 Context 可能导致不必要的重新渲染,因为它本质上是全局的。而 Props 则更细粒度,仅影响接收它们的组件

使用样例, 文件名为 ThemeContext.js,创造好了context,引用该文件后可以 useContext

import React, { createContext, useState, useContext } from 'react';// 创建 ThemeContext
export const ThemeContext = createContext();// 创建一个提供者组件来包裹需要访问 context 的组件树
export const ThemeProvider = ({ children }) => {const [theme, setTheme] = useState('light'); // 默认主题为 lightconst toggleTheme = () => {setTheme(prevTheme => prevTheme === 'light' ? 'dark' : 'light');};return (<ThemeContext.Provider value={{ theme, toggleTheme }}>{children}</ThemeContext.Provider>);
};
import React, { useContext } from 'react';
import { ThemeProvider, ThemeContext } from './ThemeContext'; // 假设文件名为 ThemeContext.js
import MiddleComponent from './MiddleComponent';function App() {const { theme, toggleTheme } = useContext(ThemeContext);return (<ThemeProvider><div className={`app ${theme}`}><button onClick={toggleTheme}>Toggle Theme</button><MiddleComponent /></div></ThemeProvider>);
}export default App;
import React from 'react';
import DeeplyNestedComponent from './DeeplyNestedComponent';function MiddleComponent() {return (<div><h2>Middle Component</h2><DeeplyNestedComponent /></div>);
}export default MiddleComponent;
import React, { useContext } from 'react';
import { ThemeContext } from './ThemeContext'; // 假设文件名为 ThemeContext.jsfunction DeeplyNestedComponent() {const { theme } = useContext(ThemeContext);return (<div className={`deeply-nested-component ${theme}`}><h3>Deeply Nested Component with {theme} theme</h3></div>);
}export default DeeplyNestedComponent;

useEffect

useEffect Hook 让你可以执行副作用操作(如数据获取、订阅或手动 DOM 操作),并根据指定的依赖项数组来决定何时重新执行副作用

  1. 无依赖项: 在组件每次渲染后执行。
  2. 空数组([]): 仅在组件挂载和卸载时执行
  3. 依赖项数组: 当数组中的任何值发生变化时,effect将会重新运行。
import React, { useState, useEffect } from 'react';function Example() {const [count, setCount] = useState(0);useEffect(() => {console.log(`You clicked ${count} times`);return () => {// 清理函数console.log('清理工作');};}, [count]); // 只有 count 改变时触发(注意 初始化的时候也会加载一次return (<div><p>You clicked {count} times</p><button onClick={() => setCount(count + 1)}>Click me</button></div>);
}

useMemo

useMemo Hook 用于记忆计算结果,避免重复计算。它接收一个创建函数和依赖项数组,只有当依赖项改变时才会重新计算返回值。

import React, { useState, useMemo } from 'react';function computeExpensiveValue(a, b) {console.log("Performing expensive computation...");return a + b;
}function Example({ a, b }) {const [count, setCount] = useState(0);const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);return (<><p>Memoized Value: {memoizedValue}</p><p>Count: {count}</p><button onClick={() => setCount(count + 1)}>Increase Count</button></>);
}

useCallBack

seCallback Hook 与 useMemo 类似,用于记忆函数定义。优化性能,特别是当将回调函数作为 props 传递给子组件时,可以防止子组件重新渲染。

import React, { useState, useCallback } from 'react';function ChildComponent({ onButtonClick }) {console.log("ChildComponent render");return <button onClick={onButtonClick}>Click Me!</button>;//即使父组件渲染,ChildComponent 接收到的 onButtonClick 回调不会改变, Click me Button不会重新渲染
}function ParentComponent() {const [count, setCount] = useState(0);const handleClick = useCallback(() => {console.log("Button clicked");}, []); // 空数组意味着这个回调永远不会更新return (<><ChildComponent onButtonClick={handleClick} /><p>Count: {count}</p><button onClick={() => setCount(count + 1)}>Increase Count</button></>);
}
http://www.cadmedia.cn/news/4505.html

相关文章:

  • 太原站建设有多长时间不限制内容的搜索引擎
  • php网站开发流程图怎么做推广和宣传平台
  • web网站建设报价女排联赛最新排行榜
  • 通辽企业网站建设友情链接页面
  • 长春网站建设外包百度网站流量查询
  • 深圳网站建设公司市场引擎优化搜索
  • 学习网页设计网站制作什么是网络营销战略
  • 如何建设网站与域名宁波网络推广公司有哪些
  • 非小号是根据国外哪个网站做的seo优化网页
  • 做网站用哪个软件免费发布信息平台有哪些
  • 图片生成器下载短视频入口seo
  • 家装要去哪个公司装修青岛seo网站推广
  • 化妆品品牌网站建设seo站长常用工具
  • 个人网站模板html代码市场推广是做什么的
  • 广告行业网站建设方案搜狗搜图
  • 昆山网站建设天津搜索引擎优化
  • 成都网站建设 四川冠辰郑州网站托管
  • 如何用zblog做棋牌网站全自动引流推广软件app
  • 常州网站建设方案优化营销型网站建设流程
  • 武汉装修公司哪家好网站优化软件哪个好
  • 湘潭做网站建设的公司脚上起小水泡还很痒是什么原因
  • 网站模块插件是怎么做的关键词搜索引擎又称为
  • 企业网站做备案百度网页版首页
  • 入门编程软件seo是什么级别
  • 建立网站目录结构时不正确的建议是公司网络营销推广方案
  • 内蒙古工程建设招投标中心网站网站发布平台
  • 学电脑培训班多少一个月长沙企业seo服务
  • 怎么样做国际网站生意合肥百度推广排名优化
  • 上海室内设计有限公司百度seo优化包含哪几项
  • 企业网站互动交流模块谷歌广告联盟