- 29
- 0
问题
- 新手,我想做一个带单独登录页面的react单页应用,不知道如何处理登录页面的路由。
- 我按照下面的代码处理了登录组件,可以实现登录进去后进入login页面,但是当我切到 localhost/#/layout/id这些主页面的路由时是个白屏,而且chrome调试工具没有报错,webpack也没提示错误。
- 求解,是不是我的方案有问题?怎么解决localhost/#/layout/id白屏的问题?
我的代码
app.jsx
import Login from 'page/login/index.jsx';
import Layout from 'component/layout/index.jsx';
class App extends React.Component{
render(){
return(
<HashRouter>
<switch>
<Route exact path="/" component={Login} />
<Route exact path="/layout" component={Layout} />
</switch>
</HashRouter>
)
}
}
ReactDOM.render(
<App />,
document.getElementById('app')
);
login.jsx 页面是我的登录页面,我希望只在输入url后的第一次显示
class Login extends React.Component{
render(){
return(
<div class="loginpage">
<p>登录</p>
</div>
);
}
}
export default Login;
layout.jsx 页面是我的主页面
import TopNav from "component/nav-top/index.jsx";
import SideNav from "component/nav-side/index.jsx";
import Home from 'page/home/index.jsx';
import Id from 'page/id/index.jsx';
import Data from 'page/data/index.jsx';
import Dev from 'page/dev/index.jsx';
class Layout extends React.Component{
constructor(props){
super(props);
};
render(){
return(
<div id="layout">
<TopNav />
<SideNav />
<Switch>
<Route exact path="/layout/home" component={Home} />
<Route exact path="/layout/id" component={Id} />
<Route exact path="/layout/dev" component={Dev} />
<Route exact path="/layout/data" component={Data} />
<Redirect from="layout" to="/layout/home"/>
</Switch>
</div>
);
}
}
export default Layout;
webpack配置
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const webpack = require('webpack');
module.exports = {
entry: './src/app.jsx',
output: {
path: path.resolve(__dirname,'dist'),
publicPath: '/dist/',
filename: 'js/app.js'
},
resolve:{
alias:{
page: path.resolve(__dirname,'src/page'),
component: path.resolve(__dirname,'src/component')
}
},
module: {
rules: [
// react语法的处理
{
test: /\.jsx$/,
exclude: /(node_modules)/,
use: {
loader: 'babel-loader',
options: {
presets: ['env','react']
}
}
},
// css文件的处理
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: "css-loader"
})
},
//图片的配置
{
test:/\.(png|jpg|gif)$/,
use: [
{
loader: 'url-loader',
options: {
limit:8192,
name:'resouce/[name].[ext]'
}
}
]
}
]
},
plugins: [
// 处理html文件
new HtmlWebpackPlugin({
template: './src/index.html'
}),
// 独立css文件
new ExtractTextPlugin("css/[name].css"),
],
devServer:{
port: 8086,
historyApiFallback:true
}
};
- 共 0 条
- 全部回答
-
彩虹糖没有糖 普通会员 1楼
在React中,你可以使用React Router库来处理登录页面的路由。React Router是一个用于管理React应用中路由的库。
以下是一个简单的例子:
首先,你需要在你的项目中安装React Router。你可以使用npm或yarn来安装:
```bash npm install react-router-dom
或
yarn add react-router-dom ```
然后,你可以在你的应用的
src目录中创建一个文件夹,名为router。这个文件夹将包含你的路由配置文件和应用中的所有路由组件。在
router文件夹中,你可以创建一个名为index.js的文件,然后在其中添加以下代码:```jsx import React from 'react'; import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
function App() { return (
); }export default App; ```
在这个例子中,我们创建了一个默认的路由,该路由将导航到应用的主页。我们还创建了一个登录路由,该路由将导航到登录页面。
你可以根据需要修改路由配置文件,例如,你可以添加或删除路由,改变路由的URL,更改路由的匹配条件等。
最后,你可以使用
App组件来渲染你的应用。例如,你可以在App组件中添加一个按钮,点击该按钮时,导航到登录页面:```jsx function App() { return (
); }export default App; ```
在这个例子中,我们添加了一个按钮,当用户点击该按钮时,导航到登录页面。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
