GVKun编程网logo

reactjs – 无法使react-hot-loader和webpack-dev-server与react-router一起工作(react usestate不起作用)

11

本文将介绍reactjs–无法使react-hot-loader和webpack-dev-server与react-router一起工作的详细情况,特别是关于reactusestate不起作用的相关信

本文将介绍reactjs – 无法使react-hot-loader和webpack-dev-server与react-router一起工作的详细情况,特别是关于react usestate不起作用的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于electron + react + react-router + mobx + webpack 搭建脚手架工程、node.js – React未定义ReferenceError?我正在使用webpack和webpack-dev-server、React Router无法与Webpack Server和Redux一起使用?、React 简单实例 (React-router + webpack + Antd )的知识。

本文目录一览:

reactjs – 无法使react-hot-loader和webpack-dev-server与react-router一起工作(react usestate不起作用)

reactjs – 无法使react-hot-loader和webpack-dev-server与react-router一起工作(react usestate不起作用)

我正在尝试使用react-hot-loader与webpack-dev-server和react-router,但是当我尝试访问localhost时:3000 /我得到:

不能获取 /

当然,它在我尝试访问localhost:8000 /时有效.我试图遵循react-hot-boilerplate,没有成功.

这是我的代码:

server.js

const http = require('http');
const express = require('express');
const consolidate = require('consolidate');
const bodyParser = require('body-parser');
const routes = require('./routes');

const app = express();

app.set('views','public/pages'); // Set the folder-name from where you serve the html page.
app.set('view engine','html');
app.engine('html',consolidate.handlebars);
app.use(express.static('public')); // Set the folder from where you serve all static files
app.use(express.static('public/dist')); // Set the folder from where you serve all static files
app.use(bodyParser.urlencoded({ extended: true }));

const portNumber = 8000;

http.createServer(app).listen(portNumber,() => {
  console.log(`Server listening at port ${portNumber}`);
  routes.initialize(app);
});

const webpack = require('webpack');
const WebpackDevServer = require('webpack-dev-server');
const config = require('./webpack.config');

new WebpackDevServer(webpack(config),{
  colors: true,historyApiFallback: true,inline: true,hot: true,}).listen(3000,'localhost',(err) => {
  if (err) {
    console.log(err);
  }
});

routes.js(所以所有路由都指向路由器)

function initialize(app) {
  const routes = [
    '/','/login',];

  routes.forEach((route) => {
    app.get(route,(req,res) => {
      res.render('main-content.html');
    });
  });
}

exports.initialize = initialize;

webpack.config.js

const webpack = require('webpack');
const path = require('path');

const nodeDir = `${__dirname}/node_modules`;

const config = {
  resolve: {
    alias: {
      react: `${nodeDir}/react`,'react-dom': `${nodeDir}/react-dom`,'react-router': `${nodeDir}/react-router`,'react-bootstrap': `${nodeDir}/react-bootstrap`,veLocity: `${nodeDir}/veLocity-animate`,moment: `${nodeDir}/moment`,slimscroll: `${nodeDir}/slimscroll`,},entry: {
    routes: [
      'webpack-dev-server/client?http://localhost:3000','webpack/hot/only-dev-server','./public/src/routes/js/main',],vendors: [
      'react','react-dom','react-router','react-bootstrap','veLocity','moment','slimscroll',output: {
    path: path.join(__dirname,'public/dist'),publicPath: path.join(__dirname,filename: 'bundles/[name].bundle.js',chunkFilename: 'chunks/[name].chunk.js',module: {
    loaders: [
      {
        test: /\.jsx?$/,include: path.join(__dirname,'public'),loader: 'react-hot',{
        test: /\.js$/,include: path.resolve(__dirname,loader: 'babel',{
        test: /\.css$/,loader: 'style!css-loader?modules&importLoaders=1' +
        '&localIdentName=[name]__[local]___[hash:base64:5]',plugins: [
    new webpack.HotModuleReplacementPlugin(),new webpack.optimize.CommonsChunkPlugin('vendors','./bundles/vendors.js',Infinity),};

module.exports = config;

脚本

"scripts": {
    "dev": "webpack --config webpack.config.js","hot": "webpack-dev-server --devtool eval --progress --colors --inline --hot","build": "webpack -p --config webpack.config.prod.js"
  }

主content.html

<!DOCTYPE html>
<html>
  <head>
    <Meta charset="utf-8">
    <Meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Brigad Admin Panel</title>
    <!-- Tell the browser to be responsive to screen width -->
    <Meta content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no" name="viewport">
    <!-- Bootstrap -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
    <!-- Font Awesome -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.0/css/font-awesome.min.css">
    <!-- Ionicons -->
    <link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
    <!-- Customs -->
    <link rel="stylesheet" href="styles/global.css">
    <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,300,300italic,600,400italic,700,600italic,700italic,800,800italic&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
  </head>

  <body>
    <div id="content"></div>

    <!--<script src="dist/bundles/vendors.js"></script>-->
    <!--<script src="dist/bundles/routes.bundle.js"></script>-->

    <script src="http://localhost:8080/public/dist/bundles/vendors.js"></script>
    <script src="http://localhost:8080/public/dist/bundles/routes.bundle.js"></script>
  </body>
</html>

入口点

import React from 'react';
import { render } from 'react-dom';
import { Router,browserHistory } from 'react-router';

import RootRoute from './components/RootRoute';

render(
  <Router history={browserHistory} routes={RootRoute} />,document.getElementById('content')
);

如何使反应热加载器工作?

提前致谢.

您应该在webpack.config中为publicPath提供localhost:3000.

在dev-server配置中,您可能需要添加指向构建输出(./public/dist)的contentBase选项.

看看这个https://github.com/webpack/docs/wiki/webpack-dev-server#content-base

electron + react + react-router + mobx + webpack 搭建脚手架工程

electron + react + react-router + mobx + webpack 搭建脚手架工程

项目地址 : https://github.com/ConardLi/electron-react

electron-react

electron + react + react-router + mobx + webpack 搭建的脚手架工程

像开发react web项目一样开发electron

image

项目路径与命名

main  //主进程
    menu  //菜单
render  //渲染进程
    component  //组件
    config  //配置
    public  //静态资源
    routes  //路由
    service  //服务
    utils  //工具类
    view  //页面
scripts  //打包脚本
main_process  //主进程打包目录
render_process   //渲染进程打包目录
dist    //客户端打包目录
resources  //图标资源

使用

本地调试

npm install
npm start

本地测试打包

npm run compile

打包客户端

npm run pack-win
npm run pack-mac

解决了什么问题

1.electron+react框架搭建

主进程代码使用babel编译,渲染进程使用webpack打包,快速开始开发。

2.调试

集成环境选择模块,简单分离开发,测试,线上环境。

image

3.程序保护

开机自启

托盘最小化

崩溃监控

4.升级

一行代码接入升级平台,实现客户端升级功能

5.打包构建

一个指令搞定打包

npm run pack-win
npm run pack-mac

项目地址 : https://github.com/ConardLi/electron-react

node.js – React未定义ReferenceError?我正在使用webpack和webpack-dev-server

node.js – React未定义ReferenceError?我正在使用webpack和webpack-dev-server

这是我的jsx:

var React = require('react');
  var ReactDOM = require('react-dom');
  ReactDOM.render(
    <h1>hello world</h1>,document.getElementById('content')
  )

我用webpack构建build / bundle.js&
我将bundle.js导入index.html

index.html的:

<!DOCTYPE html>
<html>
  <head>
  ┊ <Meta charset="utf-8">
  ┊ <Meta name="viewport" content="width=device-width">
  ┊ <title></title>
  </head>
  <body>
  ┊ <div id="content"></div>
  ┊ <script src="./build/bundle.js" type="text/javascript" charset="utf-8"></script>
  </body>
</html>

但是当我运行webpack-dev-server时,chrome控制台错误:
bundle.js:57未捕获的ReferenceError:未定义React
我确定,我已经运行了npm install react

enter image description here

我该怎么办?(-_-)ゞ゛

解决方法

你应该把它添加到你的app.js而不是.jsx中

var React = require('react');
  var ReactDOM = require('react-dom');
  ReactDOM.render(
    <h1>hello world</h1>,document.getElementById('content')
  )

JSX是一种由React组件解释的转换语言.所以,在app.js中必须有React才能让React组件解释jsx !!

React Router无法与Webpack Server和Redux一起使用?

React Router无法与Webpack Server和Redux一起使用?

当仅使用路径Body组件时,它将在您走的每条路径中呈现,因为对于我在任何路径尝试之前都将Backslash放入的SuccessPageComponent而言,反斜线现在将在每条路径中

 <Switch>
    <Route exact path="/" component={Body} />
    <Route path="/success" component={SuccessPageComponent} />
  </Switch>

一开始我经常使用它,但是如果您看起来需要添加反斜杠,或者转到可以通过以下操作创建的404页面:

<Route component={NoFound} />

像这样您可以创建404页面 react-router-doom doc

React 简单实例 (React-router + webpack + Antd )

React 简单实例 (React-router + webpack + Antd )

 

React Demo  Github 地址

经过React Native 的洗礼之后,写了这个 demo ;React 是为了使前端的V层更具组件化,能更好的复用,同时可以让你从操作dom中解脱出来,只需要操作数据就会改变相应的dom; 而React Native 是希望我们能够使用前端的技术栈就可以创建出能够在不同平台运行的一个框架,性能可能比原生app差一点点。

ReactJs和React Native的原理是相同的,都是由js实现的虚拟dom来驱动界面view层渲染。只不过ReactJs是驱动html dom渲染; React Native是驱动android/ios原生组件渲染。

React基于组件(component)开发,组件和组件之间通过props传递值,每个组件都有一个状态(state),当某个方法改变了这个状态值时,整个组件就会重新渲染,从而达到刷新(这里的刷新是指state的属性与之前的相比较,发生改变了就重绘,否则不变,相当于Vue里边的 watch函数)。另外,说到重新渲染就要提到虚拟dom了,就是用js模拟dom结构,等整个组件的dom更新完毕,才渲染到页面,简单来说只更新了相比之前改变了的部分,而不是全部刷新,所以效率很高。

目录我就不多介绍了,可以查看 github 中源码,主要实现了如下:

1,React JSX 语法实际使用

2,React 的生命周期,初始化,Rander 函数的渲染机制

3,React 常用的框架 Antd,图表插件 echarts 的使用

4,网络请求使用的 axiso  ,请求的封装,拦截,后端接口的统一管理封装 等

5,模块化,组件化 

具体功能点有: 表格,标签页 ,表单 ,轮播 ,网络请求实践 ,列表渲染, 图表, 富文本 等 . . . . . /

 

查看 : React-Antd-demo-one 

关于reactjs – 无法使react-hot-loader和webpack-dev-server与react-router一起工作react usestate不起作用的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于electron + react + react-router + mobx + webpack 搭建脚手架工程、node.js – React未定义ReferenceError?我正在使用webpack和webpack-dev-server、React Router无法与Webpack Server和Redux一起使用?、React 简单实例 (React-router + webpack + Antd )等相关知识的信息别忘了在本站进行查找喔。

本文标签: