Pay*_*yne 4 reactjs react-router-v4 laravel-mix
我知道有几个帖子有类似的问题,但不同的方法似乎无法理解。我想了解更多并能够使用 React.js 和 Laravel 开发多个应用程序。
Header.js:导入文件
import React, { Component } from 'react';
import {
BrowserRouter as Router,
Link,
Switch,
Route
} from 'react-router-dom';
import Home from './Home';
import About from './About';
import Dashboard from '../admins/Dashboard';
import Contact from './Contact';
Run Code Online (Sandbox Code Playgroud)
路由器(BrowserRouter)
<Router>
<div>
<nav className="navbar navbar-expand-lg navbar-dark bg-dark navbar-fixed-top">
<button className="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span className="navbar-toggler-icon"></span>
</button>
<div className="collapse navbar-collapse" id="navbarSupportedContent">
<ul className="navbar-nav mr-auto">
<li className="nav-item active">
<Link className="nav-link" to="/" exact
>Home</Link>
</li>
<li className="nav-item">
<Link className="nav-link" to="/about">About Us</Link>
</li>
<li className="nav-item">
<Link className="nav-link" to="/contact">Contact</Link>
</li>
</ul>
<form className="form-inline my-2 my-lg-0">
<input className="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search" />
<button className="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form>
</div>
</nav>
<Switch>
<Route exact path='/' component={Home}/>
<Route exact path="/about" component={About}/>
<Route path='/contact' component={Contact}/>
<Route path='/admins/dashboard' component={Dashboard}/>
</Switch>
</div>
</Router>
Run Code Online (Sandbox Code Playgroud)
当我点击链接时,它会显示链接,但每当我重试刷新页面时,它都会显示错误。我已经尝试过可能的例子,但似乎没有任何效果。我不知道我是否做错了。我一直在试图看看如何弄清楚。我看到一篇文章说 createBrowserHistory 已弃用且 react-router v4 不支持,即使我正在努力实现该示例。有没有更好的方法来处理这个问题?
我有多个页面(组件)。
索引.js
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import {
BrowserRouter as Router,
} from 'react-router-dom';
import Header from './Header';
import Footer from './Footer';
export default class Index extends Component {
render() {
return (
<div>
<Header />
<Footer/>
</div>
);
}
}
if (document.getElementById('app')) {
ReactDOM.render(<Index />, document.getElementById('app'));
}
Run Code Online (Sandbox Code Playgroud)
关于.js
import React, { Component }from 'react';
import { Redirect } from 'react-router-dom';
class About extends Component {
constructor(props)
{
super(props);
}
render(){
return (
<div className="jumbotron">
<h2>About Us</h2>
</div>
);
}
}
export default About;
Run Code Online (Sandbox Code Playgroud)
应用程序.js
/**
* First we will load all of this project's JavaScript dependencies which
* includes React and other helpers. It's a great starting point while
* building robust, powerful web applications using React + Laravel.
*/
require('./bootstrap');
/**
* Next, we will create a fresh React component instance and attach it to
* the page. Then, you may begin adding components to this application
* or customize the JavaScript scaffolding to fit your unique needs.
*/
require('./components/Index');
Run Code Online (Sandbox Code Playgroud)
小智 9
为了知识起见,我认为你做错了整件事。您的 index.js 需要包含import { BrowserRouter, Switch, Route } from 'react-router-dom'以及在 BrowswerRouter 的锚标签中定义的路由,即在 ie 下方
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter, Route, Switch } from 'react-router-dom'
import Header from './Header';
import Footer from './Footer';
import Home from './Home';
import About from './About';
import Dashboard from '../admins/Dashboard';
import Contact from './Contact';
export default class Index extends Component {
render() {
return (
<BrowserRouter>
<div>
<Header/>
<Switch>
<Route exact path='/' component={Home}/>
<Route exact path='/about' component={About}/>
<Route path='/contact' component={Contact}/>
<Route path='/admins/dashboard' component={Dashboard}/>
</Switch>
<Footer/>
</div>
</BrowserRouter>
);
}
}
if (document.getElementById('app')) {
ReactDOM.render(<Index />, document.getElementById('app'));
}
Run Code Online (Sandbox Code Playgroud)
由于这是一个 Laravel Mix,预先设置 reactjs,到你的路由下的 web.php 更改为Route::view('/{path?}', 'welcome'); 这意味着您将视图限制为一个页面,但从您的视图中呈现多个组件。
在您的welcome.blade.php 中,确保避免使用绝对路径,而是使用类似这样的东西href="{{ asset('css/app.css') }}"
在 Header.js 中,删除不必要的导入文件。从'react-router-dom'导入{链接};
如果您对理解安排有任何困难,可以发送完整的 header.js、welcome.blade.php 等来帮助您
设置 basename 属性
<Router basename={'/directory-name'}>
<Route path='/' component={Home} />
</Router>
Run Code Online (Sandbox Code Playgroud)
定义你的 Laravel 路线,如下所示
Route::view('/{path?}', 'welcome');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2616 次 |
| 最近记录: |