React

您所在的位置:网站首页 react调用函数子组件方法 React

React

2023-06-07 17:52| 来源: 网络整理| 查看: 265

1.setState可能是异步更新(是同步还是异步)?

在 React 中,setState 方法是异步更新状态的。这意味着在调用 setState 后,React 不会立即更新组件的状态,而是将该更新放入队列中,并在稍后的时间异步地执行更新。这样做的好处是可以将多个状态更新合并为一个更新,从而提高性能。如果需要在 setState 更新后立即执行操作,可以使用回调函数或者生命周期方法 componentDidUpdate。

2.react合成事件是什么?与原生事件的区别

React 合成事件是 React 提供的一种对浏览器原生事件的封装,它是在浏览器原生事件的基础上,实现了跨浏览器兼容性以及更好的性能优化。 React 合成事件与原生事件的区别如下:

1. 浏览器兼容性:React 合成事件通过统一封装,使得在不同浏览器下表现一致,而原生事件在不同浏览器下存在兼容性问题。

2. 性能优化:React 合成事件在事件处理函数执行前,会将所有的事件都放在一个队列中,然后通过事件池来统一管理,避免了频繁创建和销毁事件对象,从而提高性能。

3. 事件属性:React 合成事件与原生事件的事件属性不完全一致,例如在 React 中,事件对象的属性名为 onClick,而在原生事件中为 onclick。

4. 事件绑定方式:React 中的事件绑定方式为驼峰式写法,如 onClick,而原生事件的绑定方式为小写字母加下划线,如 onclick。 总之,通过封装浏览器原生事件,React 合成事件提供了一种更加高效、可靠、跨浏览器兼容的事件处理方式,使得开发者能够更加专注于业务逻辑的实现。

3.什么是虚拟DOM?VirtualDOM及其工作原理

Virtual DOM 是一个轻量级的 JavaScript 对象,它最初只是 real DOM 的副本。它是一个节点树,它将元素、它们的属性和内容作为对象及其属性。 React 的渲染函数从 React 组件中创建一个节点树。然后它响应数据模型中的变化来更新该树,该变化是由用户或系统完成的各种动作引起的。

Virtual DOM 工作过程有三个简单的步骤。

1、每当底层数据发生改变时,整个 UI 都将在 Virtual DOM 描述中重新渲染。

2、然后计算之前 DOM 表示与新表示的之间的差异。

3、完成计算后,将只用实际更改的内容更新 real DOM。

4.类组件和函数组件之间的区别是啥?

React 中有两种定义组件的方式:类组件和函数组件。它们之间的区别如下:

1、语法:类组件是通过 ES6 的 class 关键字来定义的,而函数组件则是通过一个普通的 JavaScript 函数来定义的。

2、内部状态:类组件可以使用 state 来存储和更新内部状态,而函数组件之前是没有内部状态的,但是自 React 16.8 版本开始,函数组件通过使用 useState hook 可以使用内部状态。

3、生命周期:类组件有完整的生命周期函数,包括 componentDidMount、componentWillUnmount 等等。函数组件没有完整的生命周期函数,但是通过使用 useEffect hook,可以模拟出生命周期函数的效果。

4、性能:函数组件比类组件更加轻量级,因为函数组件不需要实例化,也不需要维护实例化后的状态。在 React 16 版本之前,函数组件的性能要比类组件低,因为函数组件没有 shouldComponentUpdate 生命周期函数,无法进行性能优化。但是在 React 16 版本中,React 对函数组件进行了优化,引入了 Fiber 架构,使得函数组件和类组件的性能差距变得非常小。

总之,类组件和函数组件都是 React 中常用的组件定义方式,它们各有优劣,开发者可以根据实际业务需求选择合适的方式来定义组件。

5.React 中 refs 干嘛用的?

在 React 中,ref 是用来获取组件或 DOM 元素的句柄的,它可以用来访问组件实例或者 DOM 元素,从而可以对它们进行操作或者读取它们的属性。 ref 的使用方式有两种:

(1)字符串形式的 ref:在 React 16 版本之前,可以使用字符串形式的 ref 来获取组件或 DOM 元素的句柄通过字符串形式的 ref 将 input 元素的句柄存储在 this.myRef 变量中,然后在 componentDidMount 生命周期函数中,通过 this.myRef.focus() 来获取焦点。

(2)回调函数形式的 ref:在 React 16 版本之后,官方推荐使用回调函数形式的 ref在上面的例子中,通过回调函数形式的 ref 将创建的 React.createRef() 对象存储在 this.myRef 变量中,然后在 componentDidMount 生命周期函数中,通过 this.myRef.current.focus() 来获取焦点。总之,ref 的使用可以方便地获取组件或 DOM 元素的句柄,从而可以对它们进行操作或者读取它们的属性,但是在使用 ref 时需要注意不要过度使用,以免降低代码的可维护性和可读性。

6.state 和 props 区别是啥?

在React中,props和state是组件中用于存储和管理数据的两种机制,它们之间的区别如下:

(1)数据来源:props是由父组件传递给子组件的数据,而state是组件内部管理的数据。

(2)可变性:props是不可变的,即父组件传递给子组件后,子组件不能直接修改props中的数据;而state是可变的,即组件内部可以通过setState方法来更新state中的数据。

(3)对组件的影响:props的改变不会直接影响到父组件或其他组件,只会影响到当前的子组件;而state的改变会触发组件的重新渲染,并可能影响到其他相关组件。

(4)初始化:props是由父组件传递给子组件的,因此在子组件中不需要初始化;而state需要在组件内部进行初始化。

(5)作用域:props的作用域是在组件内部,不能在组件外部访问;而state的作用域也是在组件内部,但可以通过向子组件传递props的方式让其他组件访问到state中的数据。

总之,props和state是组件中用于存储和管理数据的两种机制,它们各有自己的特点和应用场景。在组件开发中,需要根据实际业务需求来选择合适的数据管理方式。

7.如何创建 refs 与使用场景

Refs 提供了一种方式,用于访问在 render 方法中创建的 React 元素或 DOM 节点。Refs 应该谨慎使用,如下场景使用 Refs 比较适合:

(1)处理焦点、文本选择或者媒体的控制

(2)触发必要的动画

(3)集成第三方 DOM 库

8.函数组件与类组件生命周期

在 React 中,类组件和函数组件的生命周期函数有所不同,下面是它们的生命周期函数对比:

(1)类组件生命周期

componentWillMount:在组件挂载之前调用,只会在客户端调用,在服务端渲染时不会被调用。

componentDidMount:在组件挂载之后调用,通常用于进行一些异步操作,例如获取数据、添加事件监听等。

componentWillReceiveProps:在组件即将接收到新的 props 时调用,可以在这个函数中根据新的 props 来更新组件的状态。

shouldComponentUpdate:在组件接收到新的 props 或者 state 时,是否需要重新渲染组件。默认情况下,每次 props 或者 state 发生变化时,组件都会重新渲染,但是通过重写 shouldComponentUpdate 函数,可以让组件在某些特定情况下不进行重新渲染,从而提高组件的性能。

componentWillUpdate:在组件即将重新渲染时调用,可以在这个函数中进行一些组件更新前的准备工作,例如:保存一些当前的状态数据。

componentDidUpdate:在组件重新渲染之后调用,可以在这个函数中进行一些组件更新后的操作,例如:更新 DOM、添加事件监听等。

componentWillUnmount:在组件卸载之前调用,可以在这个函数中进行一些清理工作,例如:取消网络请求、清除定时器等。

(2)函数组件生命周期

函数组件没有完整的生命周期函数,但是可以通过使用 useEffect hook 模拟出生命周期函数的效果。useEffect hook 接受一个函数和一个依赖项数组作为参数,函数会在组件挂载、更新和卸载时被调用,依赖项数组用于控制函数的调用时机。下面是常用的 useEffect hook 用法:

模拟 componentDidMount:只在组件挂载时调用一次的副作用函数。

总之,函数组件和类组件的生命周期函数有所不同,但是通过使用 useEffect hook,函数组件可以模拟出生命周期函数的效果,从而实现类似的生命周期管理。

9受控组件和非受控组件区别是啥?

在 React 中,表单组件可以分为受控组件和非受控组件两种类型,它们的主要区别如下:

(1)数据来源:受控组件的数据来源于 React 的状态(即state);非受控组件的数据来源于 DOM 节点(即通过ref访问DOM节点)。

(2)数据传递:受控组件使用 props 将数据传递给子组件,然后通过回调函数将子组件中修改的数据传递回父组件更新状态;非受控组件直接通过 DOM 节点来获取和修改数据。

(3)数据更新:因为受控组件的数据来源于 React 的状态,所以可以通过setState方法来更新数据;而非受控组件的数据来自DOM节点,只能直接操作DOM来更新数据。

(4)使用场景:受控组件适用于需要实时校验和控制用户输入的场景;非受控组件适用于一些简单的表单场景,例如:只需获取用户输入后提交表单等。总之,受控组件和非受控组件在数据来源、数据传递、数据更新和使用场景等方面存在一些差异,需要根据实际业务需求来选择合适的表单组件类型。

10 什么是 React.createElement ?

React.createElement 是 React 中用于创建虚拟 DOM 元素的函数,其用法如下:

其中,type 表示元素的类型,可以是字符串表示的 HTML 标签名或自定义组件的函数;props 表示元素的属性对象;children 表示元素的子元素,可以是多个参数,也可以是数组。 React.createElement 函数会返回一个描述虚拟 DOM 元素的 JavaScript 对象,这个对象包含了元素的类型、属性、子元素等信息。当 React 需要更新 DOM 时,会根据这个虚拟 DOM 对象构建出真实的 DOM 元素。

11.讲讲什么是 JSX ?

JSX是JavaScript的语法扩展,它可以在JavaScript代码中嵌入类似于HTML的标记语言。React使用JSX来定义组件的结构和样式,这使得代码更加简洁、易于阅读和维护。在JSX中,使用类似HTML标记的语法来创建React元素,

当需要在JSX中使用JavaScript表达式时,需要使用花括号{}将表达式包裹起来。还可以在JSX中使用三元运算符、逻辑运算符等JavaScript的语法。 JSX中的元素、组件和属性名一般采用驼峰式命名法,例如onClick、className等。在React中,JSX会被转换为React元素,React元素是React中最基本的构建块,它是一个普通的JavaScript对象,包含了元素的类型、属性、子元素等信息。当需要将React元素渲染到页面上时,可以使用ReactDOM.render函数。

12.为什么不直接更新 state 呢 ?

React 中的 state 是组件内部的状态,只能通过调用 setState 方法进行更新,而不能直接修改。这是因为直接修改 state 可能会引起一些不可预测的问题。

无法触发组件重新渲染:如果直接修改 state,React 就无法检测到 state 的变化,也就无法触发组件的重新渲染。因此,直接修改 state 会导致 UI 不更新,从而产生一些不可预测的问题。

(1)破坏单向数据流:React 推崇单向数据流的模式,即数据只能从父组件传递给子组件,而不能反过来。如果直接修改 state,那么就可能破坏这种单向数据流的模式,从而导致代码逻辑混乱、难以维护。

(2)可能引发性能问题:React 通过检测 state 的变化来判断是否需要重新渲染组件。如果直接修改 state,那么就可能会引起一些不必要的组件重渲染,从而导致性能问题。因此,为了保证代码的可靠性和性能,我们应该始终使用 setState 方法来更新 state。这样可以保证 React 能够正确地检测到 state 的变化,并且能够触发组件的重新渲染,从而保证 UI 的正确性和性能。

13.使用 React Hooks 好处是啥?

使用 React Hooks 的好处如下:

(1)函数组件可以拥有状态和生命周期:在 React 16.8 之前,函数组件只能是无状态的(stateless),无法拥有自己的状态和生命周期。而使用 Hooks 可以使函数组件拥有自己的状态和生命周期,从而让函数组件更加强大和灵活。

(2)代码更加简洁和可读:使用 Hooks 可以使代码更加简洁和可读,因为它能够将相关的逻辑聚合在一起,避免了类组件中常见的状态和生命周期分散在各个生命周期方法中的问题。

方便代码复用和组件抽象:使用 Hooks 可以方便地将组件逻辑抽象成自定义 Hooks,从而实现代码复用和组件抽象。这样可以减少重复的代码,提高代码的可维护性和可重用性。

(3)更好地处理副作用:使用 Hooks 的 useEffect 钩子可以更好地处理组件的副作用,如订阅和取消订阅事件、修改 DOM 元素、发送网络请求等。这可以使代码更加清晰,避免了类组件中常见的 componentDidMount、componentDidUpdate 和 componentWillUnmount 等生命周期方法的混乱和不易管理。

更好地处理组件间通信:使用 Hooks 可以方便地处理组件间的通信,如使用 useContext 钩子在组件间共享状态、使用 useReducer 钩子管理组件的状态等。这可以使代码更加简洁和易于维护。

(4)更好地处理性能问题:使用 Hooks 可以更好地处理组件的性能问题,如使用 useMemo 和 useCallback 钩子优化组件的性能、使用 Reacmo 高阶组件缓存组件的渲染结果等。这可以使代码更加高效和流畅。

14.React 中的 useState() 是什么?

useState() 是 React Hooks 中的一种,它是一个用于在函数组件中添加局部状态的钩子函数。它的作用是在函数组件中添加状态,从而使函数组件能够拥有自己的状态,并且能够在状态发生变化时重新渲染组件。

useState() 接受一个参数作为初始状态,并且返回一个数组,数组中包含两个元素:当前状态和更新状态的函数。在上面的例子中,我们定义了一个名为 count 的状态和一个名为 setCount 的更新状态的函数。通过调用 setCount 函数,我们可以更新 count 状态的值,并且重新渲染组件。需要注意的是,由于 useState() 返回的状态和更新状态的函数是一一对应的,因此我们需要使用数组解构来获取它们,并且需要使用合适的名称来命名它们。另外,由于 useState() 是一个钩子函数,因此它只能在函数组件中调用,而不能在类组件中使用。

15.如何在 ReactJS 的 Props上应用验证?

ReactJS 中可以通过 Props 来传递数据和方法,如果传递的数据类型不正确或者缺少必要的参数,就会导致应用程序出现错误。为了避免这种情况,可以使用验证(Props Validation)来检查和验证 Props 的类型和值。 ReactJS 提供了一种定义 Props 验证规则的方式,即使用 propTypes 属性。propTypes 是一个对象,用于定义组件接收的 Props 的类型和是否必需。在组件定义中,可以通过设置 propTypes 属性来定义 Props 的类型和是否必需

需要注意的是,propTypes 只是一种辅助开发的工具,不会在生产环境中进行验证。因此,在开发过程中,应该尽可能地使用 propTypes 来验证 Props 的类型和是否必需,以提高代码的可读性和可维护性。

16.当调用setState时,React render 是如何工作的?

(1)虚拟 DOM 渲染:当render方法被调用时,它返回一个新的组件的虚拟 DOM 结构。当调用setState()时,render会被再次调用,因为默认情况下shouldComponentUpdate总是返回true,所以默认情况下 React 是没有优化的。

(2)原生 DOM 渲染:React 只会在虚拟DOM中修改真实DOM节点,而且修改的次数非常少——这是很棒的React特性,它优化了真实DOM的变化,使React变得更快。

17.React中setState的第二个参数作用是什么?

在 React 中,setState() 是一个用于更新组件状态的方法。它可以接收两个参数,第一个参数可以是一个对象或者一个函数,用于更新组件的状态;第二个参数是一个可选的回调函数,用于在组件状态更新完毕后执行一些操作。第二个参数的作用是在组件状态更新完毕后执行一些操作,例如在组件渲染完成后获取 DOM 元素的位置或者尺寸等信息。这是因为在 React 中,setState() 是一个异步操作,不会立即更新组件的状态。因此,如果需要在状态更新完毕后执行一些操作,就需要使用第二个参数来指定回调函数。

回调函数中获取的状态值可能不是最新的值。如果需要获取最新的状态值,可以使用 useEffect() 钩子来监听组件状态的变化。

18.解释 React 中 render() 的目的。

每个React组件强制要求必须有一个 render()。它返回一个 React 元素,是原生 DOM 组件的表示。如果需要渲染多个 HTML 元素,则必须将它们组合在一个封闭标记内,例如 、、 等。此函数必须保持纯净,即必须每次调用时都返回相同的结果。

18.React的状态提升是什么?

React的状态提升就是用户对子组件操作,子组件不改变自己的状态,通过自己的props把这个操作改变的数据传递给父组件,改变父组件的状态,从而改变受父组件控制的所有子组件的状态,这也是React单项数据流的特性决定的

19.react 强制刷新

在 React 中,如果需要强制刷新组件,可以使用 forceUpdate() 方法。forceUpdate() 方法会强制重新渲染组件,无论组件是否已经处于更新队列中。需要注意的是,React 官方并不鼓励使用 forceUpdate() 方法,因为它会跳过一些性能优化,可能会导致组件性能下降。因此,只有在必要的情况下才应该使用 forceUpdate() 方法。

需要注意的是,由于 forceUpdate() 方法会跳过一些性能优化,因此它可能会导致组件性能下降。如果需要在组件状态发生变化时自动重新渲染组件,可以使用 setState() 方法来更新组件状态,从而触发组件的重新渲染。

20.事件this怎么修改

在 React 中,事件处理函数中的 this 默认指向组件实例,而不是事件目标元素。如果需要在事件处理函数中访问事件目标元素,需要将 this 绑定到事件目标元素上,或者使用箭头函数来避免 this 的指向问题。下面是几种修改事件处理函数中 this 指向的方法:

(1)将 this 绑定到事件目标元素上: 需要注意的是,每次调用 bind() 方法都会返回一个新的函数,因此在性能方面可能存在一些问题。

(2)使用箭头函数来避免 this 的指向问题:

使用箭头函数定义事件处理函数可能会影响性能,因为每次渲染组件时,都会创建一个新的函数。因此,如果需要在性能方面进行优化,可以使用 bind() 方法来绑定 this。

21.路由模式是什么 重定向路由

路由模式是指前端路由的实现方式。常见的路由模式有两种:Hash 模式和 History 模式。

Hash 模式:在 URL 中使用 # 符号来表示路由路径。例如:http://example.com/#/home。当 URL 中的 hash 发生变化时,浏览器不会向服务器发送请求,而是触发 hashchange 事件,从而实现前端路由的跳转。

History 模式:使用 HTML5 中的 History API 来实现前端路由。通过修改浏览器的历史记录,从而实现前端路由的跳转。例如:http://example.com/home。History 模式需要服务器的支持,因为在刷新页面时,浏览器会向服务器发送请求,需要服务器返回正确的页面。在 React 中,可以使用 react-router-dom 库来实现前端路由。

中的 to 属性必须以斜杠 / 开头,表示根目录下的路由路径。如果使用相对路径,可能会导致重定向失败。

路由模式是指前端路由的实现方式。常见的路由模式有两种:Hash 模式和 History 模式。

(1)Hash 模式:在 URL 中使用 # 符号来表示路由路径。例如:http://example.com/#/home。当 URL 中的 hash 发生变化时,浏览器不会向服务器发送请求,而是触发 hashchange 事件,从而实现前端路由的跳转。

(2)History 模式:使用 HTML5 中的 History API 来实现前端路由。通过修改浏览器的历史记录,从而实现前端路由的跳转。例如:http://example.com/home。History 模式需要服务器的支持,因为在刷新页面时,浏览器会向服务器发送请求,需要服务器返回正确的页面。在 React 中,可以使用 react-router-dom 库来实现前端路由。

22怎么实现路由懒加载

路由懒加载是指在需要加载路由组件时再进行加载,而不是在应用初始化时就加载所有路由组件。这种方式可以提高应用的初始加载速度,减少不必要的网络请求,从而提升用户体验。在 React 中,可以使用 React.lazy() 和 Suspense 组件来实现路由懒加载。

我们使用 React.lazy() 函数来定义需要懒加载的组件。React.lazy() 函数接受一个函数作为参数,这个函数返回一个 import() 方法调用,用来动态加载组件。需要注意的是,这个函数必须返回一个默认导出的组件。然后,我们使用 Suspense 组件来包裹需要懒加载的路由组件。Suspense 组件接受一个 fallback 属性,用来指定加载组件时的占位符。当需要加载的路由组件还没有加载完成时,就会显示 fallback 属性指定的占位符。当加载完成后,就会显示路由组件。需要注意的是,React.lazy() 目前只支持默认导出的组件,不能支持命名导出的组件。如果需要加载命名导出的组件,可以使用 React.lazy() 与 import() 方法结合使用,或者使用其他的第三方库来实现路由懒加载。

23正向传值方式

在 React 中,组件之间的通信可以通过 props 和 state 来实现。正向传值是指从父组件向子组件传递数据的方式。下面介绍几种常见的正向传值方式:

(1)使用 props 父组件可以通过 props 将数据传递给子组件。子组件通过 props 来获取父组件传递的数据。父组件 Parent 将数据 Hello, World! 通过 data 属性传递给子组件 Child。子组件 Child 通过 props 来获取父组件传递的数据,并将数据渲染到页面中。

(2)使用子组件的内部状态子组件可以定义自己的内部状态,通过 props 来初始化内部状态。父组件可以通过 props 来改变子组件的内部状态。

父组件 Parent 定义了一个内部状态 data,并将它通过 data 和 setData 两个属性传递给子组件 Child。子组件 Child 可以通过 props.data 来获取父组件传递的数据,并通过 props.setData 来改变自己的内部状态。当用户点击按钮时,子组件 Child 调用 props.setData 方法来改变自己的内部状态,并将新的状态渲染到页面中。

24逆向传值方式

在 React 中,组件之间的通信可以通过 props 和 state 来实现。逆向传值是指从子组件向父组件传递数据的方式。下面介绍几种常见的逆向传值方式:

(1)使用回调函数子组件可以通过回调函数来将数据传递给父组件。父组件将回调函数通过 props 传递给子组件,子组件在适当的时候调用回调函数来传递数据。父组件 Parent 定义了一个回调函数 handleData,并将它通过 onData 属性传递给子组件 Child。子组件 Child 在用户点击按钮时调用 props.onData 方法来传递数据。当父组件接收到数据时,就可以进行相应的处理。

(2)使用 context React 中的 context 可以实现跨组件传递数据,从而避免了 props 层层传递的问题。子组件可以通过 context 来将数据传递给父组件。

在上面的例子中,父组件 Parent 定义了一个名为 DataContext 的 context,并将 handleData 方法传递给子组件 Child。子组件 Child 使用 useContext 钩子来获取 handleData 方法,并在用户点击按钮时调用该方法来传递数据。当父组件接收到数据时,就可以进行相应的处理。注意,如果子组件和父组件不在同一个组件树中,就需要使用 React.forwardRef 和 useImperativeHandle 来实现 context 的逆向传值功能。

25同胞传值方式

在 React 中,组件之间的通信可以通过 props 和 state 来实现。同级传值是指在同一个父级组件下的同级组件之间传递数据的方式。下面介绍几种常见的同级传值方式:

(1)使用父组件作为中介同级组件可以将数据传递给它们的父组件,然后父组件再将数据传递给其他同级组件。

同级组件 Child1 和 Child2 将数据通过 onData 属性传递给它们的父组件 Parent。父组件 Parent 接收到数据后,将数据再通过 onData 属性传递给其他同级组件。当同级组件接收到数据时,就可以进行相应的处理。

(2)使用 Redux Redux 是一个状态管理库,可以用于管理全局的状态。同级组件可以通过 Redux 来共享状态,从而避免了 props 层层传递的问题。

同级组件 Child1 和 Child2 通过 useSelector 钩子来获取全局状态中的数据,并通过 useDispatch 钩子来改变全局状态中的数据。当用户点击按钮时,同级组件调用 dispatch 方法来改变全局状态中的数据,并将新的数据渲染到页面中。

26跨组件传值方式

在 React 中,组件之间的通信可以通过 props 和 state 来实现。跨组件传值是指在不同层级的组件之间传递数据的方式。下面介绍几种常见的跨组件传值方式:

1.使用 props

跨组件传值最常见的方式就是通过 props 将数据从父组件传递到子组件,然后再通过子组件传递到其他组件。

数据从爷爷组件 GrandParent 通过 data 属性传递给父组件 Parent,然后再通过 data 属性传递给子组件 Child1 和 Child2。当子组件接收到数据时,就可以进行相应的处理。

2. 使用 context

React 中的 context 可以实现跨组件传递数据,从而避免了 props 层层传递的问题。

数据从爷爷组件 GrandParent 通过 DataContext.Provider 组件传递给子孙组件。子孙组件通过 useContext 钩子来获取 DataContext 中的数据,并在页面中进行渲染。

3. 使用 Redux

Redux 是一个状态管理库,可以用于管理全局的状态。跨组件传值可以通过 Redux 来实现。

全局状态中的数据通过 Redux 来共享给子孙组件。子孙组件通过 useSelector 钩子来获取全局状态中的数据,并在页面中进行渲染。当用户需要改变数据时,可以通过 dispatch 方法来改变全局状态中的数据,从而实现跨组件传值的功能。

27你对“单一数据源”有什么理解?

Redux 使用 “Store” 将程序的整个状态存储在同一个地方。因此所有组件的状态都存储在 Store 中,并且它们从 Store 本身接收更新。单一状态树可以更容易地跟踪随时间的变化,并调试或检查程序。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3