2017-07-26 147 views
2
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') 
); 

Works with dom devReactDOM.render()未解决

ReactDOM.render()的作品只是罚款与 '反应-DOM' 的发展。但是,只要我尝试导入minified'react-dom.min'而不是'react-dom',render()就会无法解析,什么都不会发生。我无法从内容辅助(ctrl +空格)中找到render()。

我已经安装[email protected][email protected]与npm,他们在'npm列表'。然后我尝试重新安装它们,但是没有奏效。装载

+1

导入不与文件系统执行1:1操作。您只能从该文件明确导出的文件(使用关键字'export')导入文件。如果你想缩小你的代码,你应该使用构建工具。 – nem035

回答

2

非模块

节点模块需要/进口必须填写的出口与模块想让公众 一切反对。

stackoverflow.com/a/14914442/6836839

react-dom.min.js作为一个简单的JS库,你不能import/require

安装

既然你不能要求/进口,则需要加载它作为正常js脚本:

<!-- index.html --> 
<script src="node_modules/react-dom/dist/react-dom.min.js"></script> 

使用

// Just call it... 
ReactDOM.render(component, document.getElementById('root')) 

如果加载从标签反应,这些顶级的API都可以在ReactDOM全球。

如果使用ES6与故宫,你可以写进口:

import ReactDOM from 'react-dom' 

如果使用ES5与故宫,你可以写:

var ReactDOM = require('react-dom'); 

https://facebook.github.io/react/docs/react-dom.html

3

在你情况下,您必须使用import ReactDOM from 'react-dom',因为import并不意味着“文件导入“,意思是”ES6模块导入“

来缩小捆绑程序文件,尝试uglifyjs-webpack-plugin(如果你使用webpack)或minifyify(如果你使用browserify

+0

它并不意味着“node.js模块导入”,它只是意味着“模块导入”。它是ECMAScript 6的一部分,而不是Node.js. – nem035

+0

我明白,但在React的情况下,'babel'会将它转换为nodejs的'require'。但是谢谢你的想法。现在更新它。 – haotang

+4

不一定。这取决于babel设置。 Babel只是一个实现细节,并不会改变'import'的语法意思或它的行为。此外,模块[现在本身可用](https://pawelgrzybek.com/native-ecmascript-modules-in-the-browser/),所以我们甚至不需要babel。 – nem035

0

导入名称不一样,你要导出的组件名称。

当在一个共同Index.js文件导入的成分,要导入的成分(从进口头“./components/Header”;)。

标头应该不同于出口默认值headerComponent;名称