我最近遇到了这个:

React.useEffect(() => {}, []);

我习惯于导入useEffect并这样称呼它:

useEffect(() => {}, []);

根据我的经验,这似乎更常见.

两者有什么区别吗?(也许是性能差异?)有没有理由更喜欢其中一个而不是另一个?

推荐答案

没有区别.不存在性能差异或功能差异.事实上,他们都提到了same exact function.

import React, { useEffect } from 'react'
React.useEffect === useEffect // true

因此使用哪一种完全取决于您的喜好.

有些人喜欢为React东西提供一个命名空间,这样您就可以输入React.use,并让IDE的自动完成为您提供很好的建议.

有些人喜欢通过直接导入函数来保持较短的行长度.

这取决于你.显然也不是wrong.


maybe很重要的一件事是,聪明的收件箱可能能够对您不使用的内容进行树摇,这使得您发送给用户的代码更小.

如果您执行import React from 'react'; React.useState(),则收件箱必须包括整个React对象.但如果您import { useState } from 'react',那么Bundle 包may能够在最终Bundle 包中包括only useState函数.

我说may是因为Bundle 很复杂.并非您导入的所有模块都可能以这种方式进行树动摇.对于React,您可能会将所有React包含在您的Bundle 包中.

但出于这些原因,我认为当您导入的模块支持它时,养成这是一个合理的习惯.


无论如何,the react docs个单独导入每个功能.

enter image description here

Typescript相关问答推荐

如何实现与静态接口相匹配的Jsonifable类型?

如何创建泛型类型组件来使用React Native的FlatList或SectionList?'

是否可以根据嵌套属性来更改接口中属性的类型?

SortKey类型不起作用,尽管它使用的单个类型工作正常<>'

我用相同的Redux—Toolkit查询同时呈现两个不同的组件,但使用不同的参数

访问继承接口的属性时在html中出错.角形

如何在编译时为不带常量的参数引发错误

如何使用WebStorm调试NextJS的TypeScrip服务器端代码?

等待用户在Angular 函数中输入

如何在已知基类的任何子类上使用`extends`?

为什么ESLint会抱怨函数调用返回的隐式`any`?

在Mac和Windows上运行的Web应用程序出现这种对齐差异的原因是什么?(ReactNative)

基元类型按引用传递的解决方法

我可以使用typeof来强制执行某些字符串吗

界面中数组中的混合类型导致打字错误

如何使用TypeScrip在EXPO路由链路组件中使用动态路由?

基于泛型的类型脚本修改类型

使用RXJS获取数据的3种不同REST API

TypeScript:方法获胜';t接受较窄类型作为参数

Typescript 从泛型推断类型