2016-12-03 76 views
2

我試圖運行我的第一反應jsx文件,它的工作原理!但是,我沒有在我的jsx中編碼的2個導入語句。reactJS導入從'反應'反應;

import React from 'react'; 
    import ReactDOM from 'react-dom'; 

我想我會需要這些進口2所以當JSX transpiles到JS(如React.createElement),該組件做出反應在範圍內。但即使沒有這兩種進口,它似乎也能奏效。

有人可以幫助我瞭解如何在沒有進口的情況下工作嗎?

感謝您的幫助!

編輯:我已經將我的代碼在這裏

script.jsx:

var Main = React.createClass({ 
    getIntialState: function() { 
     return { 
      counter: 0 
     }; 
    }, 
    clickHandler: function() { 
     return { 
      counter: this.state.counter + 1 
     }; 
    }, 
    render: function() { 
     return (
      <button onClick={this.clickHandler}>+2</button> 
     ) 
    } 
}); 

的package.json

{ 
    "name": "reactjs", 
    "version": "1.0.0", 
    "description": "", 
    "main": "react.js", 
    "dependencies": { 
    "webpack": "^1.13.3" 
    }, 
    "devDependencies": { 
    "babel-cli": "^6.18.0", 
    "babel-core": "^6.18.2", 
    "babel-loader": "^6.2.8", 
    "babel-preset-es2015": "^6.18.0", 
    "babel-preset-react": "^6.16.0", 
    "react": "^15.4.1", 
    "react-dom": "^15.4.1" 
    }, 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1", 
    "dev": "webpack --watch", 
    "build": "webpack -p" 
    }, 
    "author": "", 
    "license": "ISC" 
} 

HTML文件

<html> 
<head> 

    <title> 
     !My first React JS Component! 
    </title> 
</head> 
<body> 
    <div id="root"></div> 
    <script src="react.js"></script> 
    <script src="output.js"></script> 
</body> 
</html> 

webpack.config .js

module.exports = { 
    entry: "./app/script.jsx", 
    output: { 
     filename: "output.js" 
    }, 
    module: { 
     loaders: [ 
      { 
       test: /\.(js|jsx)$/, 
       loader: 'babel-loader' 
      } 
     ] 
    } 
} 
+1

您可能正在全局範圍內使用該文件,並使用'。我的項目是用使用babel-loader的webpack捆綁軟件構建的 – InfiniteLoop

+1

有沒有什麼機會可以製作某種可再現的例子(參見[mcve]),因此它更清晰,或者詳細說明您的設置如何工作? – Aurora0001

回答

3

這是因爲我在@DorWeid指出的腳本標記中包含了react.js。所以即使沒有導入也能正常工作。感謝所有,並感到抱歉,很笨!