Javascript ReactDOM.render()未解析 从“React”导入React; //从“react dom”导入react dom; 从“react dom/dist/react dom.min”导入ReactDOM; 从“reactstrap”导入{Alert}; 类AlertLine扩展了React.Component{ 建造师(道具){ 超级(道具); 此.state={ 可见:正确 }; } onDismiss=()=>{ 这是我的国家( { 可见:假 } ); }; render(){ 返回(
ReactDOM.render()与“react dom”配合使用可以很好地进行开发。但是,当我尝试导入缩小的“react dom.min”而不是“react dom”时,render()将无法解析,并且什么也没有发生。我也无法从内容辅助(ctrl+space)中找到render() 我已经安装了react@15.6.1反应-dom@15.6.1使用npm,它们在“npm列表”中。然后我尝试重新安装它们,但没有成功。非模块 加载了require/import的节点模块必须使用 模块想要公开的所有内容Javascript ReactDOM.render()未解析 从“React”导入React; //从“react dom”导入react dom; 从“react dom/dist/react dom.min”导入ReactDOM; 从“reactstrap”导入{Alert}; 类AlertLine扩展了React.Component{ 建造师(道具){ 超级(道具); 此.state={ 可见:正确 }; } onDismiss=()=>{ 这是我的国家( { 可见:假 } ); }; render(){ 返回( ,javascript,reactjs,react-dom,Javascript,Reactjs,React Dom,ReactDOM.render()与“react dom”配合使用可以很好地进行开发。但是,当我尝试导入缩小的“react dom.min”而不是“react dom”时,render()将无法解析,并且什么也没有发生。我也无法从内容辅助(ctrl+space)中找到render() 我已经安装了react@15.6.1反应-dom@15.6.1使用npm,它们在“npm列表”中。然后我尝试重新安装它们,但没有成功。非模块 加载了require/import的节点模块必须使用 模块想要公开的所有
react dom.min.js
用作简单的js库,您不能导入
/需要
安装
由于您无法要求/导入,因此需要将其作为正常的js
脚本加载:
import React from 'react';
// import ReactDOM from 'react-dom';
import ReactDOM from 'react-dom/dist/react-dom.min';
import {Alert} from 'reactstrap';
class AlertLine extends React.Component {
constructor(props) {
super(props);
this.state = {
visible: true
};
}
onDismiss = () => {
this.setState(
{
visible: false
}
);
};
render() {
return (
<div>
<Alert color="success" isOpen={this.state.visible} toggle={this.onDismiss}>
<strong>Success!</strong> You successfully read this important alert message.
</Alert>
</div>
);
}
}
ReactDOM.render(
<AlertLine/>,
document.getElementById('root')
);
注
如果从标记加载React,则ReactDOM全局上可以使用这些顶级api
如果将ES6与npm一起使用,则可以编写导入:
// Just call it...
ReactDOM.render(component, document.getElementById('root'))
如果您将ES5与npm一起使用,您可以编写:
import ReactDOM from 'react-dom'
在您的情况下,您必须使用
从'react dom'导入ReactDOM
,因为导入并不意味着“文件导入”,而是意味着“ES6模块导入”
若要缩小捆绑包文件,请尝试(如果使用的是webpack
)或(如果使用的是browserify
)导入名称与导出的组件名称不同
当您在公共Index.js文件中导入组件并且正在导入组件时(从“/components/Header”导入头;)
标题应不同于导出默认的标题组件;名称它不是指“node.js模块导入”,它只是指“模块导入”。它是ECMAScript 6的一部分,不是Node.js。我知道,但在React case中,babel
会将其转换为nodejs的require
。但感谢您的想法。现在更新它。不一定。这取决于babel设置。babel只是一个实现细节,不会改变语法导入的含义或含义它的行为。此外,模块是这样的,所以我们甚至不需要babel。是的,我们需要,但这不是重点,我的目的是进一步解释为什么说“nodejs模块导入”是不正确的:)。所有这些语法意味着您正在导入一个模块,您无法确定用户的构建系统将如何传输该模块,甚至无法确定它是否会传输。同意,感谢@nem035帮助我了解更多有关babel
作业的信息:DImporting与文件系统的行为不符合1:1。您只能从不符合以下条件的文件导入内容:文件显式导出(使用关键字export
)。如果要缩小代码,应使用生成工具。
import ReactDOM from 'react-dom'
var ReactDOM = require('react-dom');