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 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的节点模块必须使用 模块想要公开的所有

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');