react全局方法_前端面试题 ---react

ca2a2ba7c25c78ce627c138a542a11f9.png

高阶组件相关

什么是高阶组件,它有哪些运用?
高阶组件就是一个函数,接收一个组件,经过处理后返回后的新的组件;
高阶组件,不是真正意义上的组件,其实是一种模式;
可以对逻辑代码进行抽离,或者添加某个共用方法;
eg:
react-redux :connect就是一个高阶组件,接收一个component,并返回一个新的componet,处理了监听store和后续的处理 ;
react-router :withrouter 为一个组件注入 history对象;高阶组件和父组件的区别?
高阶组件可以重写传入组件的state,function,props;可以对代码逻辑进行抽离,重写 ;
父组件只是控制子组件的view层;
react diff算法是如何提高性能的?
传统的页面更新,是直接操作dom来实现的,比如原生js或者jquery,但是这种方式性能开销比较大;
react 在初始化的时候会生成一个虚拟dom,每次更新视图会比较前后虚拟dom的区别;
这个比较方法就是diff算法,diff算法很早就已经出现了;但是react的diff算法有一个很大区别;
传递diff算法:通过循环递规对节点进行依次对比,时间算法复杂度是 o(n^3),n代表节点数;
react diff 算法: 采用逐层比较的方式;把时间算法复杂度从O(n^3)次方,降低到O(n)次方;
什么是react虚拟dom,为什么虚拟dom可以提高性能?
虚拟dom是真实dom的一份映射表,react中我们只要改变state,
react就会调用batching(批处理)、diff算法自动更新虚拟dom;
虚拟dom再来操作真实dom,从而改变视图;
什么是Fiber?是为了解决什么问题?
为什么setState不设计成同步的?
## 保持内部的一致性,和状态的安全性
保持state,props.refs一致性;
## 性能优化
react会对依据不同的调用源,给不同的 setState调用分配不同的优先级;
调用源包括:事件处理、网络请求、动画 ;
## 更多可能性
异步获取数据后,统一渲染页面;保持一致性,
react生命周期?
react 生命周期主流的主要有2个大的版本;
一个是 v16.3之前的:
一个是v16.3之后的;
v16.3之前 的生命周期主要分为4个阶段,8个生命周期:

  • 初始化值阶段 initialization: getDefaultProps,getInitialState;
  • 初始阶段 mount: componentWillMount,componentDidMount;
  • 更新阶段 update:componetWillReceiveProps ,shouldComponetUpdate ,componentWillUpdate,
  • 销毁阶段 unmount:componetWillMount;

v16.3之后的生命周期:
新引入了两个生命周期:

  • getDerivedStateFromProps
  • getSnapshotBeforeUpdate

提示3个不安全的生命周期(在v17中要被删除)

  • componentWillMount
  • componentWillReceiveProps
  • componetWillUpdate


react组件通讯有哪几种方式?
react组件之间通讯主要要四种方式

  1. 通过共用父组件传值, 适合,层级简单的; props来实现,子调父回调函数;
  2. redux,全局可调用,从store中取;
  3. context,注入全局变量:getChildContext; 获取全局变量:this.context.color;
  4. 自定义事件,向事件对象添加监听器,和触发事件来实现组件之间的通讯;


react的refs有什么用?
react 主要提供了一种标准数据流的方式来更新视图;
但是页面某些场景是脱离数据流的,这个时候就可以使用 refs;
react refs 是用来获组件引用的,取后可以调用dom的方法;

  • 使用场景,获取焦点 this,refs.inputPhone.focus();
  • 与第三方dom库整合

## refs 注意事项:
不能在无状态组件中使用refs


## redux 关键知识点:

  1. flux思想(四个部分:dispatcher,stores,views,actions)--flux相当于mvc中的m和c, react相当于v层;
  2. redux常用中间件(redux-logger 提供日志输出 ,redux-thunk处理异步操作,redux-promise处理异步操作-actionCreator返回值是promise)

##react-router知识点:

  1. history 路由监听
  2. history 类型,配置服务器要注意哪些地方
    什么是redux,和vuex有什么区别?
    redux主要用来做程序状态管理js库,提供可预测的状态变化;
    主要由三部分组成
    store 总状态==等同于react中的state----- vuex中的 (state)vuex中多了一个getter计算属性
    reducer 数据处理方法==等同于父级方法----- vuex中的(mutation同步,action异步)
    action 参数==等于于回调参数;-----
    多个vuex中引入module可以把store划分成多个单元 ;
    redux常用的中间件?
  • redux-logger
  • redux-thunk
  • redux-promise
  • redux-saga
  • redux-observable


redux中的connect有什么作用?
redux中的connect方法主要是把UI组件生成容器组件,connect的意思就是就是把两个连接起来;
import {connect} from "react-redux"
const VisibleTodoList=connet(
mapStateToProps, //参数
mapDispatchToProps //处理方法
)(TodoList)
create-react-app有什么优点和缺点?
优点:
快速生成架手架
缺点:

  1. 默认不引入polyfill,需要在入口引入babel-polyfill
  2. 默认只支持css热加载,不支持html,js热加载(推荐使用:react-hot-loader)


介绍一下JSX?
JSX 使用js的形式来写html代码;
JSX是一种语法糖,是调用js本身的特性来动态创建UI,与于传统模式下的模板语法不同;
介绍下Immutable?
Immutable是一种不同变的数据类型,
数据一旦被创建,就不能更改的数据,每当对它进行修改,就会返回新的immutable对象;
在做对象比较时,能提升性能;
immutable实现原理是持久化数据结构,结构共享,避免对数据对象进行深拷贝;
Setstate 被调用会发生什么?

对react的看法,它的优缺点?

优点:

  1. 提供了声明式的编程思想
  2. 提供了组件化的开发思想,大大提高前端开发的效率
  3. 引入了虚拟dom的概念,使得react可以跨端进行类各界面开发,react native,react vr,ssr;
  4. 引入了diff算法,提高了渲染效率

不足:

  1. 侵入性强,对老代码只能重做,不能部分集成(比如vue);
  • 什么是Fiber?是为了解决什么问题?
  • 如果你能够改进React的一样功能,那会是哪一个功能?
  • React 的事务?
  • 为什么说react是一个ui框架?

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

get方法请求返回一个文件_一键转换多种文件格式,完全免费,总有一个方法适合你...

相信各位小伙伴平时办公的时候,肯定经常需要对多种文件格式进行转换,但是下面这些非常好用的转换方法,你用过吗?接下来就带各位一探究竟,希望可以帮到你哦!一、迅捷PDF转换器在线版1、文档转换首先我们可以…

jacoco入门_Android jacoco 代码覆盖率测试入门

前言最近同事搞了一个基于 jacoco 统计 Android 代码覆盖率测试的功能,可以统计每天手工测试的代码覆盖率.抱着好奇的心态,自己也学习一下 jacoco,陆陆续续搞了三天终于有点结果了.本文介绍仅仅在源码中加入少量代码就可以完成代码覆盖率覆测试.代码配置build.gradle在 app 目录…

uinty粒子系统子物体变大_Unity的粒子系统(一)基础篇

简介闲来无事,仔细的学习一下粒子系统,也当是给自己做个笔记方便之后进行回顾。引擎版本:Unity2018.3创建一个ParticleSystem创建方式:1、Hierarchy-->Effects-->ParticleSystem第一种创建方式创建结果2、gameObject-->A…

java定义返回码常量_码出规范(四)常量定义

01各位屏幕前的读者朋友大家早上中午晚上凌晨好,本文是《码出规范》专题的第四篇,文中参考阿里巴巴最新发布的《Java开发手册》,结合《springboot2.x独门秘籍》专题中的项目开发进度,学以致用,让你在开发中码出高效&am…

centos下载mysql_python数据分析之路——centos下载并配置mysql与navicat的使用

python数据分析之路——centos下载并配置mysql与navicat的使用在之前的文章中已经说明了如何购买并配置一台自己的服务器,那么在安装完anaconda之后,为了之后方便用Django进行网站开发与数据分析,需要对数据库进行配置,那么在数据…

mysql 解压缩安装_[mysql] MySQL解压缩安装步骤

以前装的MySQL出问题了,只好卸载了。又下载了一个mysql-5.6.24-win32.1432006610.zip。msi文件直接安装就行了。这里需要解压到指定目录,配置后可使用。环境变量配置:在 mysql根目录下修改 my-default.ini :# These are commonly set, remove…

mysql数据库如何创建表_mysql数据库如何创建数据表

mysql数据库创建数据表的方法是:可以通过CREATE TABLE语句来创建,基本语法:【CREATE TABLE ([表定义选项])[表选项][分区选项];】。要注意的是,创建数据表不能使用SQL语言中的关键字。在 MySQL 中,可以使用 CREATE TAB…

mysql 主从一致性_mysql 主从一致性保证

MySQL 主备的基本原理MySQL 主备切换流程.png主备同步流程图备库 B 跟主库 A 之间维持了一个长连接。主库 A 内部有一个线程,专门用于服务备库 B 的这个长连接。一个事务日志同步的完整过程是这样的:在备库 B 上通过 change master 命令,设置…

php study是什么,phpstudy与wamp区别的区别是什么?

phpstudyphpstudy是一个php运行环境的集成包,用户不需要去配置运行环境,就可以使用,phpstudy不仅是一款比较好用的php调试环境工具,并且还包括了开发工具和常用手册,对于新手是有很大帮助的。phpstudy集成最新的Apache…

java全局机制,java实现全局异常机制

先上自己的代码,后整理下原理知识。下面是自己实现的全局异常机制1.继承Exception,自定义异常类​package com.zichen.xhkq.exception;/**** Title: CustomException* Description: 系统自定义的异常类型,实际开发中可能要定义多种异常类型* authorCNZZ*…

mysql crash定位分析_MySQL实例crash的案例详细分析

【问题描述】我们生产环境有一组集群的多台MySQL服务器(MySQL 5.6.21),不定期的会crash,但error log中只记录了重启信息,未记录crash时的堆栈:mysqld_safe Number of processes running now: 0mysqld_safe mysqld restarted接下来…

matlab 读取照片imread,利用matlab读取图像

怎样用matlab读取20张图片并依次展示出来指定路径下 单个文件夹data中所有图像 P .\data\;% 图像文件夹路径 img_path_list dir(strcat(P,*.jpg));%获取该文件夹中所有jpg格式的图像 N length(img_path_list);%获取图像总数量 for j 1:N%逐一读取图像 image_name img_path…

python元素定位input button_python+selenium 定位到元素,无法点击的解决方法

报错selenium.common.exceptions.WebDriverException: Message: Element is not clickable at point (234.75, 22). Other element would receive the click: 需要点击的按钮页面显示不了,需要下拉滚动条,能看到按钮了才能点1、尝试下拉一段滚动条&#…

python模拟浏览器请求的库_基于Python模拟浏览器发送http请求

1.使用 urllib2 实现#! /usr/bin/env python# -*- codingutf-8 -*-import urllib2url"https://www.baidu.com"req_header {"User-Agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11&…

owncloud8 php,owncloud-8.2.3

安装依赖Red Hat Enterprise Linux and CentOS 6 still ship with PHP 5.3. ownCloud requires PHP 5.4 or better. There areseveral third-party repositories that supply PHP 5.4, but you must use the Software Collections (SCL) repository to bein compliance with yo…

php7 提示500错误解决,升级php7出现500错误怎么办

升级php7出现500错误怎么办发布时间:2020-08-24 10:40:45来源:亿速云阅读:69作者:小新小编给大家分享一下升级php7出现500错误怎么办,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧&#xff01…

oracle 怎么 制造崩溃,oracle数据库崩溃

通过幸存oracle文件修复oracle9i数据问:我没有备分oralce,也没有导出数据库,现在操作系统崩溃了,但是oracle目录下的文件很完整,请问如何修复我的表?答:建一个相同的数据库(磁盘目录相同,否则要改init文件&…

php 500 yii,yii2.0出现500错误怎么办

1、首先开启web/index.php defined(YII_DEBUG) or define(YII_DEBUG, true); 将此改为true;看下报错的问题:Exception (Invalid Configuration) yii\base\InvalidConfigException with message The directory is notwritable by the Web process: /home/…

受迫阻尼 matlab 仿真,MATLAB系统仿真报告——有阻尼受迫振动系统

一、 问题描述有阻尼受迫振动的结构及基本原理图一 有阻尼的受迫振动系统图1为有阻尼的受迫振动系统,质量为M,摩擦系数为B, 弹簧倔强系数为K。拉力、摩擦力和弹簧力三都影响质量为M的物体的加速度。如果系统的能量守恒,且振动一旦…

php 数组 定义 遍历,php针对数组的定义、遍历及删除

本篇文章主要介绍php针对数组的定义、遍历及删除,感兴趣的朋友参考下,希望对大家有所帮助。本文实例讲述了php实现搜索一维数组元素并删除二维数组对应元素的方法,具体如下:定义一个一维数组一个二维数组如下$fruitarray(apple,or…