No104.精选前端面试题,享受每天的挑战和学习(小米)

在这里插入图片描述

文章目录

    • 聊一下vue和react的区别
    • react生命周期有哪些
    • hooks解决了什么问题
    • 小程序跳转传参怎么传
    • 附录:「简历必备」前后端实战项目(推荐:⭐️⭐️⭐️⭐️⭐️)

📈「作者简介」:前端开发工程师 | 蓝桥云课签约作者 | 技术日更博主 | 已过四六级
📚「个人主页」:阿珊和她的猫
🕐「简历必备」前后端实战项目(推荐:⭐️⭐️⭐️⭐️⭐️)

  • Vue.js 和 Egg.js 开发企业级健康管理项目
  • 带你从入门到实战全面掌握 uni-app

聊一下vue和react的区别

下面是一个简单的表格,对比Vue和React的一些主要区别:

VueReact
生态系统完整的生态系统,带有官方维护的路由器和状态管理库快速增长的生态系统,丰富的第三方库支持
学习曲线相对较低的学习曲线,易于上手和理解相对较高的学习曲线,需要更多的时间和精力来掌握
组件化开发单文件组件(SFC)结构,模板、逻辑和样式都在同一文件中分离的JSX语法,组件逻辑和样式可以在不同文件中
数据绑定双向数据绑定,可以实时响应数据的变化单向数据流,通过Props和State管理数据的传递和更新
事务处理和更新通过Vue的响应式系统自动进行事务处理和更新通过虚拟DOM进行高效的批量更新和渲染
社区支持和发展大型且活跃的社区,持续的更新和改进也有庞大的社区,但React的开发公司(Facebook)提供强大的支持。
移动开发支持原生的移动端支持,有Vue Native和Weex等框架React Native提供跨平台移动开发支持

需要注意的是,这些区别只是表面上的差异,并不代表Vue或React的优劣。选择使用哪个框架取决于个人或项目的需求,以及开发团队的技术背景和偏好。

react生命周期有哪些

React 16之前的版本,组件生命周期分为三个阶段:挂载阶段、更新阶段和卸载阶段
每个阶段都有对应的生命周期方法,用于在特定的时刻执行特定的操作。

在React 16及之后的版本,生命周期方法已经有了一些变化,被分为挂载、更新、错误处理和卸载等四个阶段。
下面是React组件的生命周期方法列表:

挂载阶段:

  1. constructor:组件被创建时调用,用于初始化状态和绑定事件处理程序。

  2. static getDerivedStateFromProps:在组件创建和更新过程中调用,用于从props中派生一些新的状态。

  3. render:根据当前的props和state,渲染组件的UI。

  4. componentDidMount:组件已经被渲染到DOM中后调用,适合执行依赖DOM的初始化操作。

更新阶段:

  1. static getDerivedStateFromProps:在更新过程中调用,用于从props中派生一些新的状态。

  2. shouldComponentUpdate:在更新之前调用,用于控制组件是否进行更新。

  3. render:根据当前的props和state,重新渲染组件的UI。

  4. getSnapshotBeforeUpdate:在render之后、更新DOM之前调用,用于获取更新前的DOM状态。

  5. componentDidUpdate:组件完成更新后调用,适合执行DOM操作或发起网络请求等更新相关的操作。

错误处理:

  1. static getDerivedStateFromError:在子组件发生错误时调用,用于在错误边界中优雅地处理错误。

  2. componentDidCatch:在子组件发生错误后调用,用于捕获和记录错误信息。

卸载阶段:

  1. componentWillUnmount:组件即将被卸载或销毁时调用,适合执行一些清理工作,如取消定时器、取消订阅等。

以上是React 16之前和16及之后的版本中常见的生命周期方法。但需要注意的是,在React 17后,一些生命周期方法已被标记为过时,建议使用新的替代方法或钩子函数,如使用新的effect钩子函数来替代componentDidMount和componentDidUpdate。

hooks解决了什么问题

Hooks 是 React 16.8 版本引入的特性,它旨在解决 React 中以下几个常见问题:

  1. 组件之间逻辑复用的问题: 在 React 之前,为了在组件之间共享逻辑,开发者需要使用高阶组件(Higher-Order Components)或 Render Props 等模式。这导致了组件层级的嵌套和复杂性增加。Hooks 通过提供可复用的状态逻辑和副作用逻辑(例如:处理订阅、定时器等)的方式,使逻辑复用更加简单和直接。

  2. 在组件之间难以复用状态逻辑的问题: 在 React 中,状态逻辑通常是与组件绑定的,而不是与具体的视图层级绑定。这导致了在组件之间复用和共享状态逻辑变得困难和容易出错。Hooks 提供了可以在组件之间复用状态逻辑的方式,例如使用 useState 钩子函数,从而使状态逻辑更加直接、简化和可复用。

  3. 复杂组件变得难以理解和维护的问题: 当业务逻辑复杂时,组件的生命周期函数会变得庞大而难以理解和维护。Hooks 的引入使得组件的生命周期被逻辑相关的片段所替代,提供了更清晰简洁的代码结构,使得组件的逻辑更易于理解和维护。

  4. 类组件带来的学习曲线和抽象度的问题: 使用类组件需要理解和掌握类的概念和语法,对于初学者来说可能增加了学习曲线和理解难度。而且使用类组件时需要注意 this 的指向等问题。Hooks 提供了以函数形式编写组件的选项,使得学习曲线降低,代码更加简洁。

总体而言,Hooks 使得在 React 中编写组件更简单、直观和灵活,解决了组件之间逻辑复用、状态复用、组件维护性和类组件的学习曲线等问题,提供了更好的开发体验。

小程序跳转传参怎么传

在小程序中,可以通过以下几种方式实现跳转页面并传递参数:

  1. URL参数传递: 在跳转链接的URL中携带参数。在原页面中使用wx.navigateTowx.redirectTo方法跳转到目标页面时,可以在URL中添加参数。目标页面可以通过options.query获取到参数值。例如:

    // 原页面跳转到目标页面并传递参数
    wx.navigateTo({
      url: '/pages/target/target?param1=value1&param2=value2'
    });
    

    在目标页面的onLoad生命周期函数中,可以通过options.query来获取参数:

    onLoad: function(options) {
      const param1 = options.query.param1;
      const param2 = options.query.param2;
      // 使用参数进行相关操作
    }
    
  2. 全局数据传递: 在原页面中使用getApp().globalData或全局单例模式来设置全局数据,在目标页面中可以直接访问该全局数据。例如:

    // 原页面设置全局数据
    getApp().globalData.param1 = value1;
    getApp().globalData.param2 = value2;
    
    // 目标页面直接访问全局数据
    const param1 = getApp().globalData.param1;
    const param2 = getApp().globalData.param2;
    // 使用参数进行相关操作
    

    需要注意的是,全局数据是共享的,可能会影响整个小程序的状态,谨慎使用。

  3. Storage存储传递: 使用wx.setStorageSync方法在原页面存储参数,在目标页面中使用wx.getStorageSync来获取参数值。例如:

    // 原页面存储参数
    wx.setStorageSync('param1', value1);
    wx.setStorageSync('param2', value2);
    
    // 目标页面获取参数
    const param1 = wx.getStorageSync('param1');
    const param2 = wx.getStorageSync('param2');
    // 使用参数进行相关操作
    

    需要注意的是,Storage的数据存储在本地,需要手动清除或更新。

以上是几种常见的小程序跳转页面传递参数的方式。选用哪种方式取决于具体的需求和场景。

附录:「简历必备」前后端实战项目(推荐:⭐️⭐️⭐️⭐️⭐️)

Vue.js 和 Egg.js 开发企业级健康管理项目
带你从入门到实战全面掌握 uni-app

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/50128.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins 配置maven和jdk

前提:服务器已经安装maven和jdk 一、在Jenkins中添加全局变量 系统管理–>系统配置–>全局属性–>环境变量 添加三个全局变量 JAVA_HOME、MAVEN_HOME、PATH 二、配置maven 系统管理–>全局工具配置–>maven–>新增 新增配置 三、配置JDK 在系统管…

查看GPU使用的最佳方式

1. watch -n 1 nvidia-smi (最有名,没有之一) nvidia自带了一个nvidia-smi的命令行工具,会显示GPU使用情况 ​​​​​​​ 作为监控 GPU 的工具就显得有点过于简陋了。比如 Process name 栏只显示命令行的程序名,不显示参数,这样输出结果就是一堆 python 和 .../Minico…

2023年深圳杯数学建模C题无人机协同避障航迹规划

2023年深圳杯数学建模 C题 无人机协同避障航迹规划 原题再现: 平面上A、B两个无人机站分别位于半径为500 m的障碍圆两边直径的延长线上,A站距离圆心1 km,B站距离圆心3.5 km。两架无人机分别从A、B两站同时出发,以恒定速率10 m/s…

语音识别 — 特征提取 MFCC 和 PLP

一、说明 语音识别是一种技术,通过计算机和软件系统,将人们的口头语言转换为计算机可读的文本或命令。它使用语音信号处理算法来识别和理解人类语言,并将其转换为计算机可处理的格式。语音识别技术被广泛应用于许多领域,如语音助手…

WIZnet W6100-EVB-Pico 树莓派入门教程(一)

概述 W6100-EVB-Pico是基于树莓派RP2040和全硬件TCP/IP协议栈控制器W6100的微控制器评估板-基本工作原理与树莓派Pico板相同,但通过W6100芯片增加了以太网功能。 板载资源 RP2040是Raspberry Pi的首款微控制器。它将我们的高性能、低成本和易用性的标志性价值观带入…

【简历完善】- SLAM - 第一篇:卡尔曼滤波的学习

场景:晚上你需要从自己的卧室去上厕所,你知道家里的布局,了解自己的步长,但是没有灯。你如何才能走到厕所呢? 一些术语 “预测” “估计”。下面所说的预测和估计就是一回事。不同博客里面这两个词语大概意思也是一…

【Spring Boot】

目录 🍪1 Spring Boot 的创建 🎂2 简单 Spring Boot 程序 🍰3 Spring Boot 配置文件 🍮3.1 properties 基本语法 🫖3.2 yml 配置文件说明 🍭3.2.1 yml 基本语法 🍩3.3 配置文件里的配置类…

wps图表怎么改横纵坐标,MLP 多层感知器和CNN卷积神经网络区别

目录 wps表格横纵坐标轴怎么设置? MLP (Multilayer Perceptron) 多层感知器 CNN (Convolutional Neural Network) 卷积神经网络 多层感知器MLP,全连接网络,DNN三者的关系 wps表格横纵坐标轴怎么设置? 1、打开表格点击图的右侧…

深度学习和神经网络

人工神经网络分为两个阶段: 1 :接收来自其他n个神经元传递过来的信号,这些输入信号通过与相应的权重进行 加权求和传递给下个阶段。(预激活阶段) 2:把预激活的加权结果传递给激活函数 sum :加权 f:激活…

零售企业信息化系统建设与应用解决方案

导读:原文《零售企业信息化系统建设与应用解决方案ppt》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 完整版领取方式 如需获取完整的电子版内容参考学习…

几个影响 cpu cache 性能因素及 cache 测试工具介绍

》内核新视界文章汇总《 文章目录 1 cache 性能及影响因素1.1 内存访问和性能比较1.2 cache line 对性能的影响1.3 L1 和 L2 缓存大小1.4 指令集并行性对 cache 性能的影响1.5 缓存关联性对 cache 的影响1.6 错误的 cacheline 共享 (缓存一致性)1.7 硬件设计 2 cpu cache benc…

抖音seo矩阵系统源码保姆式开发部署指导

抖音seo霸屏,是一种专为抖音视频创作者和传播者打造的视频批量剪辑,批量分发产品。使用抖音seo霸屏软件,可以帮助用户快速高效的制作出高质量的优质视频。 使用方法:1. 了解用户的行为习惯 2. 充分利用自身资源进行开发 3. 不…

下级平台级联安防视频汇聚融合EasyCVR平台,层级显示不正确是什么原因?

视频汇聚平台安防监控EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等,能对外分发RTSP、RTMP、FLV、HLS、WebRTC等…

国标GB28181视频监控平台EasyGBS视频无法播放,抓包返回ICMP是什么原因?

国标GB28181视频平台EasyGBS是基于国标GB/T28181协议的行业内安防视频流媒体能力平台,可实现的视频功能包括:实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。国标GB28181视频监控平台部署简单、可拓展性强,支持将…

【高危】Spring Security鉴权规则错误配置风险

漏洞描述 Spring Security 是一套为基于Spring的应用程序提供说明性安全保护的安全框架。 在 Spring Security 受影响的版本中,由于 Spring Security 的授权规则会应用于整个应用程序上下文,当应用程序中包含多个servlet,并且其中一个为Dis…

2023-将jar包上传至阿里云maven私有仓库(云效制品仓库)

一、背景介绍 如果要将平时积累的代码工具jar包,上传至云端,方便团队大家一起使用,一般的方式就是上传到Maven中心仓库(但是这种方式步骤多,麻烦,而且上传之后审核时间比较长,还不太容易通过&a…

rocketmq客户端本地日志文件过大调整配置(导致pod缓存cache过高)

现象 在使用rocketmq时,发现本地项目中文件越来越大,查找发现在/home/root/logs/rocketmqlog目录下存在大量rocketmq_client.log日志文件。 配置调整 开启slf4j日志模式,在项目启动项中增加-Drocketmq.client.logUseSlf4jtrue因为配置使用的…

适用于 Windows 10/11 的 10 款最佳免费 PDF 阅读器软件

PDF 文档非常受欢迎,因为它们可以在任何操作系统上打开,并且很容易附加到电子邮件、消息或网站中。PDF 文档还具有不易更改的优点。因此,它被个人和组织广泛用于简历、学习材料、文档以及外围设备和设备手册的数字副本。 PDF 阅读器软件可帮…

简单认识NoSQL的Redis配置与优化

文章目录 一、关系型数据库与非关系型数据库1、关系型数据库:2、非关系型数据库3、关系型数据库和非关系型数据库区别:4、非关系型数据库应用场景 二.Redis1、简介2、优点:3、Redis为什么这么快? 三、Redis 安装部署1、安装配置2、…

【深度学习Week3】ResNet+ResNeXt

ResNetResNeXt 一、ResNetⅠ.视频学习Ⅱ.论文阅读 二、ResNeXtⅠ.视频学习Ⅱ.论文阅读 三、猫狗大战Lenet网络Resnet网络 四、思考题 一、ResNet Ⅰ.视频学习 ResNet在2015年由微软实验室提出,该网络的亮点: 1.超深的网络结构(突破1000层&…