Javascript React导入语句的标准方式
我想知道在react中是否有编写导入语句的标准方法?例如,我有:Javascript React导入语句的标准方式,javascript,reactjs,typescript,import,material-ui,Javascript,Reactjs,Typescript,Import,Material Ui,我想知道在react中是否有编写导入语句的标准方法?例如,我有: import React, { useState, FormEvent } from 'react'; import Avatar from '@material-ui/core/Avatar'; import {Grid, Checkbox, TextField, FormControlLabel, CssBaseline} from '@material-ui/core'; import LockOutlinedIcon fr
import React, { useState, FormEvent } from 'react';
import Avatar from '@material-ui/core/Avatar';
import {Grid, Checkbox, TextField, FormControlLabel, CssBaseline} from '@material-ui/core';
import LockOutlinedIcon from '@material-ui/icons/LockOutlined';
import { LOGIN } from '../../graphql/mutations/login';
import { schema } from '../../helpers/validations/login';
import { Redirect } from 'react-router-dom';
import { useMutation } from '@apollo/react-hooks';
import StatusMessage from '../../helpers/statusMessages/loginMessage';
import Copyright from '../../components/copyright/copyright';
import CustomButton from '../../components/button/button';
import { ExecutionResult } from 'graphql';
import { Wrapper, StyledLink, Form, StyledTypography, StyledBox, StyledContainer} from './styles';
import { store } from '../../store';
import { useDispatch } from 'react-redux';
import SignInResponse from '../../graphql/responses/login';
import { useFormik } from 'formik';
关于是否应该从“@material ui/core”导入所有内容,是否有任何规则代码>单独还是一起?除了减少行数之外,它还有什么不同吗
在react自己的库/内容之后,是否应该导入其他本地文件/函数,是否有任何规则?还有其他规则/建议吗?不要担心有多少行用于导入模块。我认为最好的做法是先从其他供应商导入模块,然后再导入本地模块。我认为有一些需要强制执行
除此之外,我要说的是只导入所需的内容:
import Avatar from '@material-ui/core/Avatar';
比
import * as MaterialUI from '@material-ui/core';
没有标准的方法,只有个人喜好
就个人而言,我更喜欢将来自公共源的导入分组,就像您在“@material ui/core”中所做的那样代码>。您还可以使用组件、助手和类似的本地模块来实现这一点。另外,我更喜欢先导入第三方模块,然后导入本地模块
这一切都是为了找到一些“合乎逻辑”且易于扫描的东西。有一些已知的标准,其中大多数是意见,而不是必须做的事情。我建议您看看,因为它有一个关于进口的广泛标准/意见列表:
- 确保所有导入都显示在其他语句之前([
first
])
- 确保所有导出都出现在其他语句之后([
导出最后一次
])
- 报告在多个位置重复导入同一模块([
无重复项
])
- 禁止命名空间(又称“通配符”
*
)导入([无命名空间
]))
- 确保在导入路径中一致使用文件扩展名([
extensions
])
- 在模块导入顺序([
order
])中强制执行约定
- 在导入语句后强制换行([
newline after import
])
- 如果模块导出单个名称,则首选默认导出([
首选默认导出
])
- 限制模块可以具有的最大依赖项数([
max dependencies
])
- 禁止未分配的导入([
无未分配的导入
])
- 禁止命名默认导出([
无命名默认值
]))
- 禁止默认导出([
无默认导出
]))
- 禁止命名导出([
无命名导出
]))
- 禁止匿名值作为默认导出([
无匿名默认导出
])
- 希望在单个导出声明中将命名的导出分组在一起([
group exports
])
- 为动态导入强制使用webpackChunkName开头的注释([
动态导入chunkname
])
关于订单,有哪些内容:
节点“内置”模块
“外部”模块
“内部”模块
“父”目录中的模块
来自同一目录或同级目录的“同级”模块
当前目录的“索引”
不,没有关于如何导入东西的标准。但它不仅可以导入所有内容,而且可以导入您需要的内容,它还可以帮助Web打包未使用的代码。因此,我建议:
import { Avatar } from '@material-ui/core';
我喜欢做的另一件事是将本地导入与包导入分开,这使代码更具可读性:
import React, { useState, FormEvent } from 'react';
import LockOutlinedIcon from '@material-ui/icons/LockOutlined';
import { ExecutionResult } from 'graphql';
import { Avatar, Grid, Checkbox, TextField, FormControlLabel, CssBaseline } from '@material-ui/core';
import { Redirect } from 'react-router-dom';
import { useMutation } from '@apollo/react-hooks';
import { useDispatch } from 'react-redux';
import { useFormik } from 'formik';
import { LOGIN } from '../../graphql/mutations/login';
import { schema } from '../../helpers/validations/login';
import { store } from '../../store';
import { Wrapper, StyledLink, Form, StyledTypography, StyledBox, StyledContainer } from './styles';
import StatusMessage from '../../helpers/statusMessages/loginMessage';
import Copyright from '../../components/copyright/copyright';
import CustomButton from '../../components/button/button';
import SignInResponse from '../../graphql/responses/login';