Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 使用react创建组件时,我应该在何时调用库';反应';和';反应dom';?_Reactjs_Jsx_Create React App - Fatal编程技术网

Reactjs 使用react创建组件时,我应该在何时调用库';反应';和';反应dom';?

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
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,因为我去掉了导入标签,什么也没发生。你认为我应该继续导入安全措施和可读性吗?没有必要,