javascript - React 组件未在 DOM 上渲染

标签 javascript node.js reactjs npm webpack

我正在阅读 http://andrewhfarmer.com/build-your-own-starter/#0-intro 上的 React 教程并且 Counter 组件不会显示在页面上。 html 出来是这样的:

<html>
<head>
    <script src="/bundle.js" ></script>
</head>
<body>
    <div id="mount"></div>
</body>
</html>

main.js

console.log('Hello World!');
import React from 'react';
import ReactDOM from 'react-dom';
import Counter from './Counter';


ReactDOM.render(
    React.createElement(Counter),
    document.getElementById('mount')
);

计数器.js

import React from 'react';


class Counter extends React.Component {
    constructor() {
        super();
        this.state = {
            count: 0,
        };
    }

    render() {
        return (
            <button
                onClick={() => {
                    this.setState({ count: this.state.count + 1 });
                }}
            >
                Count: {this.state.count}
            </button>
        );
    }
}

export default Counter;

webpack.config.js

var path = require('path');

var config = {
  context: path.join(__dirname, 'src'),
  entry: [
    './main.js',
  ],
  output: {
    path: path.join(__dirname, 'www'),
    filename: 'bundle.js',
  },
  module: {
    loaders: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        loaders: ['babel-loader'],
      },
    ],
  },
  resolveLoader: {
    root: [
      path.join(__dirname, 'node_modules'),
    ],
  },
  resolve: {
    root: [
      path.join(__dirname, 'node_modules'),
    ],
  },
};
module.exports = config;

我们运行服务器:

cchilders@cchilders-Latitude-E7240:~/CodeTutorials/build-react-starter$ node server.js 
in the component
in the tester
in the component
in the tester
Example app listening at http://:::3000
Hash: d51a7c75081bea020fb1
Version: webpack 1.14.0
Time: 1297ms
    Asset    Size  Chunks             Chunk Names
bundle.js  744 kB       0  [emitted]  main
chunk    {0} bundle.js (main) 707 kB [rendered]
    [0] multi main 28 bytes {0} [built]
 [179] ./src/Counter.js 2.63 kB {0} [built]
webpack: bundle is now VALID.

刷新页面在终端中不显示任何内容,但开发人员工具控制台在每次刷新时显示 Hello World!

模板似乎没有被渲染,但上次我的 friend 完成教程时它按原样工作(中间件中的 public 方面可能已经提供了服务)

为什么此服务器不提供来自 / 的文件?

代码位于 https://bitbucket.org/servandoavila1/codetutorials

谢谢

最佳答案

您无需使用 document.addEventListener('DOMContentLoaded', function() {

class Counter extends React.Component {
    constructor() {
        super();
        this.state = {
            count: 0,
        };
    }

    render() {
        return (
            <button
                onClick={() => {
                    this.setState({ count: this.state.count + 1 });
                }}
            >
                Count: {this.state.count}
            </button>
        );
    }
}


    ReactDOM.render(
        React.createElement(Counter),
        document.getElementById('mount')
    );
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="mount"></div>

关于javascript - React 组件未在 DOM 上渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41993669/

相关文章:

javascript - Meteor React 表单选择已选中

node.js - V8引擎编译器错误报告

reactjs - react 风格的组件在生产中不起作用

javascript - 向输入 ='range' 添加值会导致图形错误

javascript - 更新选择列表以匹配 URL 上的主题标签更改

javascript - 如何将 iFrame 的部分 URL 更改为随机字符串?

ruby-on-rails - 在 ubuntu 上安装 Brunch

node.js - 如何使用 Node fluent-ffmpeg 向视频添加音频?

reactjs - IOS移动设备上的youtube无法正常运行

javascript - 使用 Hooks 替换而不是 concat 更新 React 上的数组状态