即使 url 更改,路由组件也不会呈现。使用自定义 webpack
Route Component dose not render even though url changes. with custom webpack
下面是我的文件结构
和 webpack.config.js 看起来像下面这样
const path = require("path");
const HtmlWebPackPlugin = require("html-webpack-plugin");
const entryPoint = path.join(__dirname, "src", "index.js");
module.exports = {
entry: entryPoint,
output: {
path: path.join(__dirname, "public"),
filename: "bundle.js",
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: "babel-loader",
},
},
{
test: /\.css$/,
use: ["style-loader", "css-loader"],
},
],
},
plugins: [
new HtmlWebPackPlugin({
template: path.join(__dirname, "public", "index.html"),
filename: "./index.html",
}),
],
devServer: {
contentBase: path.join(__dirname, "public"),
historyApiFallback: true,
// publicPath: "/dist/",
},
devtool: "source-map",
stats: {
errorDetails: true,
},
};
我不知道为什么它仍然无法工作,尽管我已经提供了 historyApiFallback
下面是我的app.js
当我点击 /home
路线时,内容没有改变。
谁能解释一下我还要补充什么
和我的 index.js
您需要将 exact
添加到您的 /
路线,否则它将匹配任何以 /
开头的内容,并且由于它在 Switch
中,它将是唯一的一个要匹配。
<Switch>
<Route exact path="/" component={() => <div>i am in home</div>} />
<Route exact path="/home" component={() => <div> i am user</div>} />
</Switch>
如果 url 没有参数化,我也会将 exact
添加到 /home
下面是我的文件结构
和 webpack.config.js 看起来像下面这样
const path = require("path");
const HtmlWebPackPlugin = require("html-webpack-plugin");
const entryPoint = path.join(__dirname, "src", "index.js");
module.exports = {
entry: entryPoint,
output: {
path: path.join(__dirname, "public"),
filename: "bundle.js",
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: "babel-loader",
},
},
{
test: /\.css$/,
use: ["style-loader", "css-loader"],
},
],
},
plugins: [
new HtmlWebPackPlugin({
template: path.join(__dirname, "public", "index.html"),
filename: "./index.html",
}),
],
devServer: {
contentBase: path.join(__dirname, "public"),
historyApiFallback: true,
// publicPath: "/dist/",
},
devtool: "source-map",
stats: {
errorDetails: true,
},
};
我不知道为什么它仍然无法工作,尽管我已经提供了 historyApiFallback
下面是我的app.js
当我点击 /home
路线时,内容没有改变。
谁能解释一下我还要补充什么
和我的 index.js
您需要将 exact
添加到您的 /
路线,否则它将匹配任何以 /
开头的内容,并且由于它在 Switch
中,它将是唯一的一个要匹配。
<Switch>
<Route exact path="/" component={() => <div>i am in home</div>} />
<Route exact path="/home" component={() => <div> i am user</div>} />
</Switch>
如果 url 没有参数化,我也会将 exact
添加到 /home