首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

前端面试指南之React篇(一)

组件之间传值父组件给子组件传值 在父组件中用标签属性的=形式传值 在子组件中使用props来获取值子组件给父组件传值 在组件中传递一个函数 在子组件中用props来获取传递的函数,然后执行该函数...事件没有在目标对象上绑定,而是在document上监听所支持的所有事件,当事件发生并冒泡至document时,react将事件内容封装并叫由真正的处理函数运行。...mapStateToProps(state,ownProps)中带有两个参数,含义是∶state-store管理的全局状态对象,所有都组件状态数据都存储在该对象中。...componentWillReceiveProps在初始化render的时候不会执行,它会在Component接受到新的状态(Props)时被触发,一般用于父组件状态更新时子组件的重新渲染。...通过事务处理机制,将多次DOM修改的结果一次性的更新到页面上,从而有效的减少页面渲染的次数,减少修改DOM的重绘重排次数,提高渲染性能。

73850

字节前端二面react面试题(边面边更)_2023-03-13

构造函数主要用于两个目的:通过将对象分配给this.state来初始化本地状态将事件处理程序方法绑定到实例上所以,当在React class中需要设置state的初始值或者绑定事件时,需要加上构造函数,...DOM不一定是效率更高,如果只修改一个按钮的文案,那么虚拟 DOM 的操作无论如何都不可能比真实的 DOM 操作更快。...在首次渲染大量DOM时,由于多了一层虚拟DOM的计算,虚拟DOM也会比innerHTML插入慢。它能保证性能下限,在真实DOM操作的时候进行针对性的优化时,还是更快的。所以要根据具体的场景进行探讨。...之间的简单关系以及不需要处理第一次渲染时prevProps为空的情况基于第一点,将状态变化(setState)和昂贵操作(tabChange)区分开,更加便于 render 和 commit 阶段操作或者说优化...mapStateToProps(state,ownProps)中带有两个参数,含义是∶state-store管理的全局状态对象,所有都组件状态数据都存储在该对象中。

1.8K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    美团前端react面试题汇总

    action时,该action的函数体会自动执行 store.dispatch(action)}(2)使用redux-saga中间件redux-saga优点:异步解耦: 异步操作被被转移到单独 saga.js...DOM Diff 算法避免了没有必要的DOM操作,从而提高性能React-Router 4怎样在路由变化时重新渲染同一个组件?...mapStateToProps(state,ownProps)中带有两个参数,含义是∶state-store管理的全局状态对象,所有都组件状态数据都存储在该对象中。...但在 React 中会有些不同,包含表单元素的组件将会在 state 中追踪输入的值,并且每次调用回调函数时,如 onChange 会更新 state,重新渲染组件。...state,相反他们只能表达想要修改的意图使用纯函数来执行修改state为了描述action如何改变state tree 需要编写reduceReact 数据持久化有什么实践吗?

    5.1K30

    Reduxreact-reduxredux中间件设计实现剖析

    我们已经知道,在使用dispatch的时候,我们会给dispatch()传入一个action对象,这个对象包括我们要修改的state以及这个操作的名字(actionType),根据type的不同,store...订阅更新,代码相对冗余,我们想要合并一些重复的操作,而react-redux就提供了一种合并操作的方案:react-redux提供 Provider和 connect两个API,Provider将store...) 我们已经知道,connect接收mapStateToProps、mapDispatchToProps两个方法,然后返回一个高阶函数,这个高阶函数接收一个组件,返回一个高阶组件(其实就是给传入的组件增加一些属性和功能..., err) throw err } } } 我们把不同功能的模块拆分成不同的方法,通过在方法内「获取上一个中间件包装过的...,我们主要做了两个改造 使用compose方法取代了middlewares.reverse(),compose是函数式编程中常用的一种组合函数的方式,compose内部使用reduce巧妙地组合了中间件函数

    2.3K20

    【干货】从零实现 react-redux

    前面我们也介绍过 React 的组件通信,在大型应用中,处理好 React 组件通信和状态管理就显得非常重要。...例如模态框的开关状态、页面的 loading 状态、单(多)选项的选中状态等等,这些状态常常分散在不同的组件里面。...在学习 Redux 之前需要先理解其工作原理,一般来说流程是这样的: 用户触发页面上的某种操作,通过 dispatch 发送一个 action。...主要是下面几步: 收集所有传入的 reducer 函数 在 dispatch 中执行 combination 函数时,遍历执行所有 reducer 函数。...store 变化之后,执行 mapStateToProps 和 mapDispatchToProps 两个函数,将其和传入的 props 进行合并,最终传给 WrappedComponent。 ?

    1.7K10

    Flux --> Redux --> Redux React 基础实例教程

    在使用React的过程中,在组件间通信的处理上我们用了回调的方式,如果组件层级很深,不同组件间的数据交流就会导致回调及其触发的函数非常多,代码冗杂 需要一个状态管理方案,方便管理不同组件间的数据,及时地更新数据...什么时候用Redux Redux说简单简单,因为也就几个API,理解好概念就好用了;说复杂也复杂,因为它将一个应用分成了不同部分(action、处理action、store数据等),在正规的项目中是推荐将各部分区分到不同文件中的...type: 'up', value }; }; 3.3 需要定义怎么处理操作,在redux中它被称作reducer 为什么把这种操作称作reducer呢 redux...在React中使用Redux Redux是一个独立的技术方案,我们将它运用到React项目中 接下来的问题主要有三个: 如何将store中的数据同步给React组件 如何让React组件调用Redux的...4.7.8 在React-Redux中使用异步 因Redux中操作的执行是同步的,如果要实现异步,比如某个操作用来发个异步请求获取数据,就得引入中间件来处理这种特殊的操作 即这个操作不再是普通的值,而是一个函数

    3.8K20

    react+redux+webpack教程2

    保存代码后少等片刻就可以看到我们做的登陆页面了。 目前这个登录组件里问候语里显示的用户名和用户输入的用户名毫无关系,如何将它们联系起来呢?...针对一个动作,仓库里会有一个或多个状态发生变化,reducer就是要指导状态如何变化。 等等,那动作是哪来的?从具体上说,动作一般是来源于用户的操作或者网络请求的回应。...login状态里的两个属性映射成了组件的属性, 所以用this.props.username就可以访问到仓库里的login.username。 然后两个input上都加上了change事件处理。...如果只是要单个页面上的这点功能,用事件处理来改变组件的state就行了。 那么redux为什么要引入这么个流程?我在开发中觉得有这么几个特点:从直观上看在视野不一样。...纯函数就像这个流水线中的工序,让数据处理的过程简单明了。 发现了吗?前面的代码中纯函数是主力。reducer很明显是纯函数。

    1.3K70

    深入Redux架构

    Action 发出以后,Reducer 立即算出 State,这叫做同步;Action 发出以后,过一段时间再执行 Reducer,这就是异步。 怎么才能 Reducer 在异步操作结束后自动执行呢?...操作发起时的 Action 操作成功时的 Action 操作失败时的 Action 以向服务器取出数据为例,三种 Action 可以有两种不同的写法。...redux-thunk中间件 异步操作至少要送出两个 Action:用户触发第一个 Action,这个跟同步操作一样,没有问题;如何才能在操作结束时,系统自动送出第二个 Action 呢?...(3)在返回的函数之中,先发出一个 Action(requestPosts(postTitle)),表示操作开始。...作为函数,mapStateToProps执行后应该返回一个对象,里面的每一个键值对就是一个映射。请看下面的例子。

    2.2K60

    【React】717- 从零实现 React-Redux

    前面我们也介绍过 React 的组件通信,在大型应用中,处理好 React 组件通信和状态管理就显得非常重要。...例如模态框的开关状态、页面的 loading 状态、单(多)选项的选中状态等等,这些状态常常分散在不同的组件里面。...在学习 Redux 之前需要先理解其工作原理,一般来说流程是这样的: 用户触发页面上的某种操作,通过 dispatch 发送一个 action。...主要是下面几步: 收集所有传入的 reducer 函数 在 dispatch 中执行 combination 函数时,遍历执行所有 reducer 函数。...store 变化之后,执行 mapStateToProps 和 mapDispatchToProps 两个函数,将其和传入的 props 进行合并,最终传给 WrappedComponent。 ?

    1.2K10

    Redux with Hooks

    [] ); ... } 这种方式相当于告诉useEffect,里面要调用的方法没有任何外部依赖——换句话说就是不需要(在依赖更新时)重复执行,所以useEffect...然而正如前文提到的,mapStateToProps中的ownProps参数同样会引起mapStateToProps的重新调用,产生新的state props: // 此函数在connected组件接收到...其返回值会作为useSelector的返回值,但与mapStateToProps不同的是,前者可以返回任何类型的值(而不止是一个对象),此外没有第二个参数ownProps(因为可以在组件内通过闭包拿到)...),那么如果selector函数返回的是对象,那实际上每次useSelector执行时调用它都会产生一个新对象,这就会造成组件无意义的re-render。...把全局的State按需求拆分到不同的context,那么自然不会相互影响导致无谓的重渲染; 把组件拆成两个,里层的用memo包裹: const Header = () => { const {

    3.3K60

    ReactReactNative 状态管理: redux 如何使用

    最后创建了两个函数:DISPATCH_ADD_TODO 和 DISPATCH_DELETE_TODO,它们用于分发数据变更操作,简化后续 connect 里的代码。...参数是先前的状态 state 和要执行的行为 action,根据 action type 行为类型,返回不同的数据。 需要注意的是,reducer 中不能修改老数据,只能新建一个数据。...Provider 包围了 App 组件,这样整个 App 组件都可以获取到 Store 中的状态和行为处理函数。...(即state对象)如何转换为 UI 组件的参数 //mapStateToProps会订阅 Store,每当state更新的时候,就会自动执行,重新计算 UI 组件的参数,从而触发 UI 组件的重新渲染...如果要分析某个状态修改操作,在 reducer 里增加日志即可定位到,这就是 redux 宣称的优势:“可追溯”。

    1.4K20

    React进阶(6)-react-redux的使用

    :当你使用React-Router 路由库时,与其他项目没有不同之处,也是使用Provider在Router外面包一层,因为Provider的唯一功能就是传入store对象 如果不这样包裹着:内部的组件时接收不到..., options,它们是可选的,它执行的结果依然是一个函数,所以才可以在后面在加上一个圆括号的,而圆括号内又接收一个参数,即是UI组件,也是傻瓜组件 有两次 connect的执行,第一次 connect...函数的执行是从react-redux库中引入这个方法,第二次是把 connect函数返回的函数再次执行,最后产生的就是容器组件,如下代码所示 import { connect } from 'react-redux...props,然后在组件内部通过 this.props的方式拿到,这是不同于之前 this.state的方式的,其实就是一个映射关系。...既然作为函数, mapStateToProps执行后应该返回一个对象,里面的每一个键值对就是一个映射 mapStateToProps 接受两个参数,第一个是 state,第二个是 ownProps, store

    2K10

    前端开发常见面试题,有参考答案

    被废弃的三个函数都是在render之前,因为fber的出现,很可能因为高优先级任务的出现而打断现有任务导致它们会被执行多次。...之间的简单关系以及不需要处理第一次渲染时prevProps为空的情况基于第一点,将状态变化(setState)和昂贵操作(tabChange)区分开,更加便于 render 和 commit 阶段操作或者说优化...对componentWillReceiveProps 的理解该方法当props发生变化时执行,初始化render时不执行,在这个回调函数里面,你可以根据属性的变化,通过调用this.setState()...componentWillReceiveProps在初始化render的时候不会执行,它会在Component接受到新的状态(Props)时被触发,一般用于父组件状态更新时子组件的重新渲染。...mapStateToProps(state,ownProps)中带有两个参数,含义是∶state-store管理的全局状态对象,所有都组件状态数据都存储在该对象中。

    1.3K20

    《彻底掌握redux》之开发一个任务管理平台

    , mapDispatchToProps )(Home) home是我们的UI组件,通过mapStateToProps, mapDispatchToProps这两个函数参数,我们可以将redux的store...我们在使用中间件时要把中间件传入applyMiddleware函数中,并将applyMiddleware作为createStore的最后一个参数,具体用法如下: const store = createStore...使用异步action的基本模式如下: 我们在异步开始时,成功时,失败时都会派发一个action,来通知用户操作的状态。...,也就不需要异步action了,但是每次异步请求时都手动调用两个action未免太粗鲁了,所以对项目温柔以待的最佳方式就是使用异步action。...异步action本质上是返回一个函数,在函数里面执行相关操作,但是普通的action返回的是一个对象,那么如何去处理呢?

    1.1K30

    React进阶(6)-react-redux的使用

    :当你使用React-Router 路由库时,与其他项目没有不同之处,也是使用Provider在Router外面包一层,因为Provider的唯一功能就是传入store对象 如果不这样包裹着:内部的组件时接收不到...,它们是可选的,它执行的结果依然是一个函数,所以才可以在后面在加上一个圆括号的,而圆括号内又接收一个参数,即是UI组件,也是傻瓜组件 有两次 connect的执行,第一次 connect函数的执行是从react-redux...props,然后在组件内部通过 this.props的方式拿到,这是不同于之前 this.state的方式的,其实就是一个映射关系。...既然作为函数, mapStateToProps执行后应该返回一个对象,里面的每一个键值对就是一个映射 mapStateToProps 接受两个参数,第一个是 state,第二个是 ownProps, store...换句话说,它定义了哪些用户的操作应该当作 Action,传给 Store。它可以是一个函数,也可以是一个对象。

    2.2K00

    高频react面试题自检

    componentWillReceiveProps在初始化render的时候不会执行,它会在Component接受到新的状态(Props)时被触发,一般用于父组件状态更新时子组件的重新渲染。...需要使用状态操作组件的(无状态组件的也可以实现新版本react hooks也可实现)总结: 类组件可以维护自身的状态变量,即组件的 state ,类组件还有不同的生命周期方法,可以让开发者能够在组件的不同阶段...,那么虚拟 DOM 的操作无论如何都不可能比真实的 DOM 操作更快。...在首次渲染大量DOM时,由于多了一层虚拟DOM的计算,虚拟DOM也会比innerHTML插入慢。它能保证性能下限,在真实DOM操作的时候进行针对性的优化时,还是更快的。所以要根据具体的场景进行探讨。...构造函数主要用于两个目的:通过将对象分配给this.state来初始化本地状态将事件处理程序方法绑定到实例上所以,当在React class中需要设置state的初始值或者绑定事件时,需要加上构造函数,

    87010

    React系列-自定义Hooks很简单

    变化很复杂,经常一个操作需要修改很多state,另一个好处是所有的state处理都集中到了一起,使得我们对state的变化更有掌控力,同时也更容易复用state逻辑变化代码,比如在其他函数中也需要触发登录...,因为useReducer的dispatch 的身份永远是稳定的 —— 即使 reducer 函数是定义在组件内部并且依赖 props useContext ,useContext肯定与React.createContext...在浏览器执行绘制之前,useLayoutEffect 内部的更新计划将被同步刷新。...阻塞了浏览器的绘制 区别就是:useEffect是异步的,useLayoutEffect是同步的 为什么使用 解决一些闪烁场景 如何使用 useLayoutEffect(fn, []) // 接收两个参数...基础Hooks就是平时与业务无关的工具方法 useEffectOnce 该Hooks在函数组件只执行一次 const useEffectOnce = (effect) => { useEffect

    2.1K20
    领券