Reactjs 使用react创建组件时,我应该在何时调用库';反应';和';反应dom';?
我研究React已经有一段时间了,刚开始用它开发我自己的应用程序时,我发现我真的不知道Reactjs 使用react创建组件时,我应该在何时调用库';反应';和';反应dom';?,reactjs,jsx,create-react-app,Reactjs,Jsx,Create React App,我研究React已经有一段时间了,刚开始用它开发我自己的应用程序时,我发现我真的不知道React和React dom库之间的区别,我知道'react'是JavaScript库,react dom是为我提供与dom交互的方法的库,但如果我不导入它们,似乎什么都不会发生(我使用create react应用程序环境,因此可能就是这样)。也就是说,我通常是这样创建组件的: import React from 'react'; function ComponentName () { return(
React
和React dom
库之间的区别,我知道'react'是JavaScript库,react dom
是为我提供与dom交互的方法的库,但如果我不导入它们,似乎什么都不会发生(我使用create react应用程序环境,因此可能就是这样)。也就是说,我通常是这样创建组件的:
import React from 'react';
function ComponentName () {
return(
<div>
<!-- Component code -->
</div>
)
}
export {ComponentName};
从“React”导入React;
函数组件名(){
返回(
)
}
导出{ComponentName};
那么上面的代码有什么区别呢
import React from 'react-dom';
function ComponentName () {
return(
<div>
<!-- Component code -->
</div>
)
}
从“React dom”导入React;
函数组件名(){
返回(
)
}
这个呢
import React from 'react-dom';
function ComponentName () {
return(
<div>
<!-- Component code -->
</div>
)
}
从“React dom”导入React;
函数组件名(){
返回(
)
}
使用React dom
为您创建React应用程序句柄(位于src
目录中的index.js
/index.ts
)
从“React”
导入React
,而不是从“React dom”
导入。如果您使用的是最新版本,则仅当您在代码中使用React
对象时才需要执行此操作(例如,使用React.memo
,尽管您可以使用从“React”
导入{memo})。您不再需要仅为JSX()导入React
基本上:
是主库“react”
提供了将react与dom一起使用的功能“react dom”
- 还有其他库可以在没有DOM的情况下使用React(例如,用于服务器端渲染)
React dom
为您创建React应用程序句柄(位于src
目录中的index.js
/index.ts
)
从“React”
导入React
,而不是从“React dom”
导入。如果您使用的是最新版本,则仅当您在代码中使用React
对象时才需要执行此操作(例如,使用React.memo
,尽管您可以使用从“React”
导入{memo})。您不再需要仅为JSX()导入React
基本上:
是主库“react”
提供了将react与dom一起使用的功能“react dom”
- 还有其他库可以在没有DOM的情况下使用React(例如,用于服务器端渲染)
- 反应
对于React,必须从“React”导入React。您需要导入默认值,并将其命名为React。这是因为无论何时编写类似或的JSX代码,都会传输此JSX代码并使用React.createElement()。因此,您需要访问名为React的对象
注意:React 17和一些旧的指定主要版本现在包括一个新的JSX转换,不需要此显式的React导入。
ReactDOM
但是,对于ReactDOM,您可能主要关注默认导出中与DOM相关的方法,如render()或Hydroid()。因为这是您可能要使用的,所以您可以根据需要为导入模块命名。所以,你可以这样做:
import FooBar from 'react-dom'
FooBar.render(someElement)
这是可行的,但标准惯例是调用导入的模块ReactDOM,因为这将使查看代码的其他人更容易理解您的代码。React
对于React,必须从“React”导入React。您需要导入默认值,并将其命名为React。这是因为无论何时编写类似或的JSX代码,都会传输此JSX代码并使用React.createElement()。因此,您需要访问名为React的对象
注意:React 17和一些旧的指定主要版本现在包括一个新的JSX转换,不需要此显式的React导入。
ReactDOM
但是,对于ReactDOM,您可能主要关注默认导出中与DOM相关的方法,如render()或Hydroid()。因为这是您可能要使用的,所以您可以根据需要为导入模块命名。所以,你可以这样做:
import FooBar from 'react-dom'
FooBar.render(someElement)
这是可行的,但标准惯例是调用导入的模块ReactDOM,因为这样会使查看您的代码的其他人更容易理解。您的最后两个代码块完全相同。。。?(我不是说它们做相同的事情。我是说它们是完全相同的。)你的最后两个代码块是完全相同的。。。?(我不是说他们做了同样的事情。我是说他们完全一样。)正是我所想的,谢谢你的帮助!正是我所想的,谢谢你的帮助!哦,我明白了。我想我用的是React 17,因为我去掉了导入标签,什么也没发生。你认为我应该继续导入安全措施和可读性吗?没有必要,更干净的代码。此外,对于任何使用React并随时更新它的人来说,这应该是非常直接的,以了解它为什么不存在。”…您可以根据需要为导入模块命名…
FooBar
中的import FooBar from'React dom'
是默认导出,而不是模块。(有一种不同的形式可以让你为一个模块导入一个模块名称空间对象,它是import*as FooBar from“react dom”;
,尽管这很少是你想要的)。我想我用的是React 17,因为我去掉了导入标签,什么也没发生。你认为我应该继续导入安全措施和可读性吗?没有必要,