请教老师为什么我单独使用 react-router-dom, 为什么没有反应

来源:5-23 集成react-router

慕圣2430575

2020-01-27

index.js
图片描述

返回结果:
图片描述

webpack.config.dev.js

const path = require('path');
const fs = require('fs');
const htmlWebpackPlugin = require('html-webpack-plugin');
const srcRoot = path.resolve(__dirname, 'src');
const devPath = path.resolve(__dirname, 'dev');
const pageDir = path.resolve(srcRoot, 'page');
const mainFile = 'index.js';

function getEntry() {
    let entryMap = {};
    fs.readdirSync(pageDir).forEach((pathname) => {
        let fullPathName = path.resolve(pageDir, pathname);
        let stat = fs.statSync(fullPathName);
        let fileName = path.resolve(fullPathName, mainFile);
        if (stat.isDirectory() && fs.existsSync(fileName)) {
            entryMap[pathname] = fileName;
        }
    });
    return entryMap;
}

function getHtmlArray(entryMap) {
    let htmlArray = [];
    Object.keys(entryMap).forEach((key) => {
        let fullPathName = path.resolve(pageDir, key);
        let fileName = path.resolve(fullPathName, key + '.html');

        if (fs.existsSync(fileName)) {
            htmlArray.push(new htmlWebpackPlugin({
                filename: key + '.html',
                template: fileName,
                chunks: [key]
            }));
        }


    });
    return htmlArray;
}


//获取所有目录下的index.js
const entryMap = getEntry();
const htmlArray = getHtmlArray(entryMap);

module.exports = {
    mode: 'development',
    entry: entryMap,
    output: {
        path: devPath,
        filename: '[name].min.js'
    },
    devServer: {
        contentBase: devPath,
    },
    module: {
        rules: [
            {test: /\.(js|jsx)$/, use: [{loader: "babel-loader"}], include: srcRoot},
            {test: /\.css$/, use: ['style-loader', 'css-loader'], include: srcRoot},
            {test: /\.scss$/, use: ['style-loader', 'css-loader', 'sass-loader', {
                loader: 'sass-resources-loader',
                    options:{
                        resources: srcRoot + '/common/common.scss'
                    }
                }], include: srcRoot},
            {test: /\.(png|jpg|jpeg)$/, use: 'url-loader?limit=8192', include: srcRoot},
        ],
    },
    plugins: [].concat(htmlArray)
};

上述这段代码(index.js)在 create-react-app 这个官方脚手架中运行使用没有问题

写回答

1回答

吕小鸣

2020-01-27

同学你好,对于首页来说,使用React Router来实现底部的三个tab的切换,是需要指定路由切换的类型的,所以页面不能之间以/home来打开,这样不会进入到React Router的逻辑中,需要首先定位到index.html,然后通过hash的方式来路由到指定tab,链接为:http://localhost:8080/index.html#/home

祝学习愉快

0
0

移动Web App开发之实战美团外卖

运用React全家桶技术,从0到1学习全面的移动 Web APP 开发技术。

389 学习 · 235 问题

查看课程