在react项目中,使用js文件输出内容,为什么无效?

App.js

import React from 'react';

class App extends React.Component {
    render() {
        return React.createElement('div', null, `Hello ${this.props.toWhat}`);
    }
}

ReactDOM.render(
    React.createElement(App, {toWhat: 'World'}, null),
    document.getElementById('root')
);

index.html

<!DOCTYPE html><html>

<head>
    <meta charset = "UTF-8">
    <title>React App</title>
</head>

<body>
    <div id="app"></div>
    <script src="dist/bundle.js"></script>
</body></html>

main.js

import React from 'react';

import ReactDOM from 'react-dom';

//import App from './App.jsx';
import App from './App.js';

ReactDOM.render(<App />, document.getElementById('app'))

package.json

{
  "dependencies": {
    "babel-core": "^6.26.0",
    "react": "^15.6.1",
    "react-dom": "^15.6.1"
  },
  "devDependencies": {
    "babel-core": "^6.26.0",
    "babel-loader": "^7.1.2",
    "babel-plugin-transform-runtime": "^6.23.0",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-react": "^6.24.1",
    "babel-preset-stage-2": "^6.24.1",
    "express": "^4.15.4",
    "html-webpack-plugin": "^2.30.1",
    "react-hot-loader": "^1.3.1",
    "webpack": "^3.6.0",
    "webpack-dev-middleware": "^1.12.0",
    "webpack-dev-server": "^2.8.2"
  },
  "name": "reactApp01",
  "version": "1.0.0",
  "main": "main.js",
  "scripts": {
    "build": "webpack",
    "watch": "webpack --watch",
    "start": "webpack-dev-server --hot --inline"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "description": ""
}

webpack.config.js

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require('webpack');
var config  = {
    //此处指明路口文件位置
    entry: './main.js',   //设置入口文件
    //配置打包结果,
    //path配置定义了输出的文件位置
    //filename则定义了打包结果文件的名称
    devtool: 'inline-source-map',
    output: {//输出目录
        filename: 'bundle.js',//设置导出文件为index.js
        path: path.resolve(__dirname, 'dist')//打包后的js文件存放的地方
    },
    //设置本地服务器端口号为9001,此端口可以自己设定,但记住不能与其他服务端口重复
    devServer:{
        contentBase: './dist',//tell the dev server where to look for files
        hot: true,
        inline:true,
        port:7700

    },
    plugins: [
        new webpack.HotModuleReplacementPlugin()
    ],
    //定义了对模块的处理逻辑,这里可以用loaders定义一系列的加载器,以及一些正则,
    //当需要加载的文件匹配test的正则时,会调用后面的loader对文件进行处理,
    //所以这就是webpack骚的可怕的地方。。。。。
    module:{
        loaders:[{
            test:/\.jsx?$/,
            exclude:/node_modules/,
            loader:'babel-loader',
            query:{
                presets:['es2015','react']
            }
        }]
    }
};

module.exports = config;

图片描述

修改完了,但是依然无效

import React from 'react';

class App extends React.Component {
    render() {
        return React.createElement('div', null, `Hello ${this.props.toWhat}`);
    }
}

export default App;

图片描述

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require('webpack');
var config  = {
    //此处指明路口文件位置
    entry: './main.js',   //设置入口文件
    //配置打包结果,
    //path配置定义了输出的文件位置
    //filename则定义了打包结果文件的名称
    devtool: 'inline-source-map',
    output: {//输出目录
        filename: 'bundle.js',//设置导出文件为index.js
        path: path.resolve(__dirname, 'dist')//打包后的js文件存放的地方
    },
    //设置本地服务器端口号为9001,此端口可以自己设定,但记住不能与其他服务端口重复
    devServer:{
        //contentBase: './dist',//tell the dev server where to look for files
        hot: true,
        inline:true,
        port:7700

    },
    plugins: [
        new webpack.HotModuleReplacementPlugin()
    ],
    //定义了对模块的处理逻辑,这里可以用loaders定义一系列的加载器,以及一些正则,
    //当需要加载的文件匹配test的正则时,会调用后面的loader对文件进行处理,
    //所以这就是webpack骚的可怕的地方。。。。。
    module:{
        loaders:[{
            test:/\.jsx?$/,
            exclude:/node_modules/,
            loader:'babel-loader',
            query:{
                presets:['es2015','react']
            }
        }]
    }
};

module.exports = config;

图片描述

图片描述

图片描述

图片描述

图片描述

图片描述

阅读 4.9k
3 个回答

首先你App.js没有把组件 export 出来。

其次 App.js 里不要 ReactDom.render。

root节点在哪里?然后,看看调试器里的HTML结构,哪个模块没渲染出来

App.js最后的
ReactDOM.render(

React.createElement(App, {toWhat: 'World'}, null),
document.getElementById('root')

);
改为
export default App;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题