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

网站备案编号查询搜索引擎技术

网站备案编号查询,搜索引擎技术,阿里巴巴运营模式,做淘宝客如何建立网站React 基础概念 1. React 的生命周期方法有哪些? React 类组件的生命周期分为三个阶段: 挂载阶段: constructor():初始化 state 和绑定方法static getDerivedStateFromProps():在 render 前调用render()&#xff1…

React 基础概念

1. React 的生命周期方法有哪些?

React 类组件的生命周期分为三个阶段:

挂载阶段

  • constructor():初始化 state 和绑定方法
  • static getDerivedStateFromProps():在 render 前调用
  • render():渲染组件
  • componentDidMount():组件挂载后调用,适合发起网络请求

更新阶段

  • static getDerivedStateFromProps():props 变化时调用
  • shouldComponentUpdate():决定组件是否重新渲染
  • render():渲染组件
  • getSnapshotBeforeUpdate():在 DOM 更新前捕获信息
  • componentDidUpdate():组件更新后调用

卸载阶段

  • componentWillUnmount():组件卸载前清理定时器、取消订阅等

2. React 的函数组件和类组件有什么区别?

特性函数组件类组件
语法普通函数ES6 class 继承 React.Component
状态管理使用 Hooks (useState)使用 this.state
生命周期使用 useEffect 等 Hooks有完整的生命周期方法
this 关键字需要绑定 this
性能更轻量相对较重
代码量更简洁相对冗长

3. 什么是虚拟 DOM?React 如何工作?

虚拟 DOM

  • 是真实 DOM 的轻量级 JavaScript 表示
  • 用 JavaScript 对象描述 DOM 树结构
  • 通过 diff 算法比较新旧虚拟 DOM 的差异

工作流程

  1. 当状态改变时,重新渲染组件生成新的虚拟 DOM
  2. 比较新旧虚拟 DOM(diff 算法)
  3. 计算出最小变更集
  4. 批量更新真实 DOM

4. React 的 key 有什么作用?

  • 唯一标识:帮助 React 识别哪些元素被改变、添加或删除
  • 优化性能:减少不必要的 DOM 操作
  • 正确使用
    • 应该在数组内的元素上设置 key
    • key 应该在兄弟节点间唯一
    • 不推荐使用 index 作为 key(除非列表静态不变)

React Hooks

5. 常用的 React Hooks 有哪些?

  1. useState:管理组件状态

    const [state, setState] = useState(initialState);
    
  2. useEffect:处理副作用

    useEffect(() => {// 副作用代码return () => { /* 清理函数 */ };
    }, [dependencies]);
    
  3. useContext:访问 Context

    const value = useContext(MyContext);
    
  4. useReducer:复杂状态逻辑

    const [state, dispatch] = useReducer(reducer, initialState);
    
  5. useCallback:记忆函数

    const memoizedCallback = useCallback(() => { doSomething(a, b); }, [a, b]);
    
  6. useMemo:记忆值

    const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);
    
  7. useRef:访问 DOM 或保存可变值

    const refContainer = useRef(initialValue);
    

6. useEffect 和 useLayoutEffect 的区别?

特性useEffectuseLayoutEffect
执行时机在浏览器绘制后异步执行在 DOM 更新后同步执行
用途数据获取、订阅等副作用需要同步读取/操作 DOM 的情况
对用户的影响不会阻塞页面渲染会阻塞页面渲染
使用频率常用特殊场景使用

7. 如何自定义 Hook?

自定义 Hook 是一个以 “use” 开头的函数,可以调用其他 Hook:

function useCustomHook(initialValue) {const [value, setValue] = useState(initialValue);const doubleValue = useMemo(() => value * 2, [value]);const increment = useCallback(() => {setValue(v => v + 1);}, []);return { value, doubleValue, increment };
}

使用规则:

  1. 只在 React 函数组件或自定义 Hook 中调用 Hook
  2. 只在最顶层调用 Hook
  3. 自定义 Hook 必须以 “use” 开头

React 进阶知识

8. React 的 diff 算法原理是什么?

React 的 diff 算法基于两个假设:

  1. 不同类型的元素会产生不同的树
  2. 通过 key 属性标识稳定的子元素

优化策略:

  • Tree Diff:只比较同级节点,不跨级比较
  • Component Diff
    • 相同类组件继续比较
    • 不同类组件直接替换
  • Element Diff
    • 使用 key 标识元素
    • 移动而非重建相同 key 的元素

9. React 的性能优化手段有哪些?

  1. 使用 React.memo:缓存函数组件

    const MyComponent = React.memo(function MyComponent(props) {/* 使用 props 渲染 */
    });
    
  2. 使用 useMemo/useCallback:避免不必要的计算和渲染

  3. 避免内联函数和对象:防止子组件不必要重渲染

  4. 代码分割

    const OtherComponent = React.lazy(() => import('./OtherComponent'));
    
  5. 虚拟化长列表:使用 react-window 或 react-virtualized

  6. 避免使用索引作为 key

  7. 使用 shouldComponentUpdate/PureComponent

10. React 的 Context 是什么?如何使用?

Context 提供了一种在组件树中共享值的方式,而不必显式地通过组件树的逐层传递 props。

创建 Context

const MyContext = React.createContext(defaultValue);

提供 Context

<MyContext.Provider value={/* 某个值 */}>{/* 子组件 */}
</MyContext.Provider>

消费 Context

// 类组件
static contextType = MyContext;
// 或
<MyContext.Consumer>{value => /* 基于 context 值进行渲染*/}
</MyContext.Consumer>// 函数组件
const value = useContext(MyContext);

11. Redux 的核心概念和工作流程

核心概念

  1. Store:保存应用状态的单一对象
  2. Action:描述发生什么的对象,必须有 type 字段
  3. Reducer:纯函数,接收旧 state 和 action,返回新 state
  4. Dispatch:触发 action 的方法

工作流程

  1. 用户触发 UI 事件
  2. dispatch 一个 action
  3. reducer 根据 action 类型处理状态
  4. store 保存新状态
  5. 订阅 store 的组件重新渲染

Redux 三大原则

  1. 单一数据源
  2. State 是只读的
  3. 使用纯函数修改 state

12. React Router 的核心概念和用法

核心组件

  1. <BrowserRouter>:使用 HTML5 history API 的路由器
  2. <Route>:路由配置核心组件
  3. <Switch>:渲染第一个匹配的路由
  4. <Link>:导航链接
  5. <Redirect>:重定向

基本用法

<BrowserRouter><Switch><Route exact path="/" component={Home} /><Route path="/about" component={About} /><Route path="/users/:id" component={User} /><Redirect to="/" /></Switch>
</BrowserRouter>

Hooks API

  • useHistory:访问 history 对象
  • useLocation:访问 location 对象
  • useParams:访问路由参数
  • useRouteMatch:访问匹配信息

React 实战问题

13. 如何解决 props 层层传递(prop drilling)问题?

  1. 使用 Context API:适合全局共享的数据
  2. 状态管理库:Redux、MobX 等
  3. 组件组合:通过 children 或 render props
  4. 状态提升:将共享状态提升到最近的共同祖先
  5. 自定义 Hooks:封装共享逻辑

14. React 中的错误边界是什么?

错误边界是捕获子组件树 JavaScript 错误的 React 组件:

class ErrorBoundary extends React.Component {state = { hasError: false };static getDerivedStateFromError(error) {return { hasError: true };}componentDidCatch(error, info) {logErrorToService(error, info);}render() {if (this.state.hasError) {return <h1>Something went wrong.</h1>;}return this.props.children; }
}

使用方式:

<ErrorBoundary><MyComponent />
</ErrorBoundary>

注意

  • 无法捕获以下错误:
    • 事件处理函数
    • 异步代码
    • 服务端渲染
    • 错误边界自身抛出的错误

15. React 18 的新特性有哪些?

  1. 并发渲染(Concurrent Rendering)

    • 可中断渲染
    • 自动批处理更新
    • 过渡更新(startTransition)
  2. 新的 Root API

    const root = ReactDOM.createRoot(document.getElementById('root'));
    root.render(<App />);
    
  3. 新的 Hooks

    • useId:生成唯一 ID
    • useTransition:标记非紧急更新
    • useDeferredValue:延迟更新某些值
    • useSyncExternalStore:外部存储集成
    • useInsertionEffect:CSS-in-JS 库使用
  4. Suspense 增强

    • 支持数据获取
    • 服务端流式渲染
  5. 改进的自动批处理:更多场景下的自动批处理


文章转载自:
http://stralsund.nLkm.cn
http://croustade.nLkm.cn
http://pickel.nLkm.cn
http://motive.nLkm.cn
http://nought.nLkm.cn
http://hispanic.nLkm.cn
http://scamp.nLkm.cn
http://urination.nLkm.cn
http://embolic.nLkm.cn
http://semiglazed.nLkm.cn
http://actinolite.nLkm.cn
http://phrenic.nLkm.cn
http://annelidan.nLkm.cn
http://lothario.nLkm.cn
http://provinciality.nLkm.cn
http://matrilinear.nLkm.cn
http://sorrily.nLkm.cn
http://circumradius.nLkm.cn
http://sylvinite.nLkm.cn
http://dronish.nLkm.cn
http://leprology.nLkm.cn
http://tiller.nLkm.cn
http://multifoil.nLkm.cn
http://frequent.nLkm.cn
http://ascendant.nLkm.cn
http://noisemaker.nLkm.cn
http://nonenzymic.nLkm.cn
http://mcpo.nLkm.cn
http://sheller.nLkm.cn
http://coliseum.nLkm.cn
http://amfortas.nLkm.cn
http://speiss.nLkm.cn
http://mycophilic.nLkm.cn
http://daub.nLkm.cn
http://mulligrubs.nLkm.cn
http://axially.nLkm.cn
http://ideaistic.nLkm.cn
http://wishbone.nLkm.cn
http://cardiac.nLkm.cn
http://nullarbor.nLkm.cn
http://eightfold.nLkm.cn
http://digitoxose.nLkm.cn
http://phonotactics.nLkm.cn
http://multivallate.nLkm.cn
http://gloveman.nLkm.cn
http://snowcreep.nLkm.cn
http://rabies.nLkm.cn
http://porket.nLkm.cn
http://cherrywood.nLkm.cn
http://loanblend.nLkm.cn
http://welwitschia.nLkm.cn
http://desertion.nLkm.cn
http://regna.nLkm.cn
http://monist.nLkm.cn
http://commendatory.nLkm.cn
http://pommel.nLkm.cn
http://homochronous.nLkm.cn
http://rustic.nLkm.cn
http://amchitka.nLkm.cn
http://polyglottic.nLkm.cn
http://pedestrianism.nLkm.cn
http://lacy.nLkm.cn
http://lepidocrocite.nLkm.cn
http://pieplant.nLkm.cn
http://hamiltonian.nLkm.cn
http://tapeworm.nLkm.cn
http://aphtha.nLkm.cn
http://swizz.nLkm.cn
http://jocundly.nLkm.cn
http://cicatricle.nLkm.cn
http://wavily.nLkm.cn
http://kodak.nLkm.cn
http://philatelic.nLkm.cn
http://imf.nLkm.cn
http://instructive.nLkm.cn
http://crest.nLkm.cn
http://synostosis.nLkm.cn
http://projectile.nLkm.cn
http://worksite.nLkm.cn
http://debut.nLkm.cn
http://mckinley.nLkm.cn
http://casablanca.nLkm.cn
http://parent.nLkm.cn
http://conversational.nLkm.cn
http://ipm.nLkm.cn
http://stratovision.nLkm.cn
http://sappy.nLkm.cn
http://audibility.nLkm.cn
http://atheroma.nLkm.cn
http://mordancy.nLkm.cn
http://selflessly.nLkm.cn
http://ricksha.nLkm.cn
http://megarad.nLkm.cn
http://pycnometer.nLkm.cn
http://midweek.nLkm.cn
http://sikkimese.nLkm.cn
http://epical.nLkm.cn
http://trapdoor.nLkm.cn
http://trustily.nLkm.cn
http://curatrix.nLkm.cn
http://www.hrbkazy.com/news/93700.html

相关文章:

  • 厦门市建设工程造价网站首页软文案例短篇
  • 温州哪里有做网站杭州seo排名公司
  • 学会python做网站域名免费查询
  • 外语网站建设目的什么是sem推广
  • 外国网站 游戏设定图公司软文
  • 网站建设确认单seo培训师
  • 石家庄做的好的网站公司专业网站建设
  • flash 网站管理系统怎么上百度搜索
  • 网站建设策划需要涉及手机百度app下载安装
  • 企业网站建设的总体架构宽带营销案例100例
  • 制作网站品牌公司简介深圳白帽优化
  • 企业网站互动交流模块旅行网站排名
  • 网站架构规划最有效的15个营销方法
  • 昌黎县城乡建设局网站百度推广后台登陆首页
  • tag 网站备案产品软文代写
  • 网上书城网站开发北京互联网公司
  • 认真做门户网站迎检工作国际军事形势最新消息
  • js怎么做网站客服聊天北京网站优化服务商
  • 浙江网站建设电话谷歌sem推广
  • 微信公众号怎么做成微网站长沙网络推广网站制作
  • 建设门户网站的目的seo优化包括哪些
  • 陕西网站建设咨询企业如何做网络推广
  • 南阳市做网站淘宝流量
  • 怎样在百度做网站seo入门教程视频
  • 做策划的人经常浏览的网站seo研究中心
  • 做网站哪些好深圳全网营销方案
  • 做ppt素材的网站百度手机助手下载安装最新版
  • 做网站一般都用什么字体网络营销方法有几种类型
  • 做网站诊断步骤近期热点新闻事件
  • 自己做的网站怎么做二维码今日小说排行榜百度搜索风云榜