javascript - 如何在 laravel 和 Admin Lte 中使用 React Routes?
问题描述
我正在尝试构建一个 crud 应用程序,我想将 react-routes 与 laravel 和 AdminLte 一起使用,因为当我访问页面时不需要刷新但我有一些问题.. -我想在 AdminLte 端使用 react-router 链接bar,我像这样创建了一个侧栏刀片文件,
<div id="sidebar"></div>
并将其包含在我的 admin.blade.php 中
<div class="wrapper">
@include('layouts.partials.nav')
@include('layouts.partials.sidebar')
<div class="content-wrapper">
<section class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>@yield('content-header')</h1>
</div>
<div class="col-sm-6 text-right">
@yield('content-actions')
</div>
</div>
</div>
</section>
<section class="content">
@yield('content')
</section>
</div>
<aside class="control-sidebar control-sidebar-dark">
<!-- Control sidebar content goes here -->
</aside>
</div>
<script src="{{ asset('js/app.js') }}"></script>
@yield('js')
</body>
之后,我为侧边栏创建了一个 javascript 文件并在那里使用反应路由链接。
我有一个 home.blade.php 文件
@extends('layouts.admin')
@section('content')
<div id="home">
</div>
@endsection
我还为家庭创建了一个 javascript 文件。如您所见,我使用了 AdminLte,而我想要做的是,当我单击侧栏中的链接时,我想更改主屏幕中的组件,但因为它们位于延迟刀片文件中,所以我不能。
我像这样实现主js文件
if (document.getElementById("sidebar")) {
ReactDOM.render(<SIDE />, document.getElementById("sidebar"));
}
if (document.getElementById("home")) {
ReactDOM.render(<INDEX />, document.getElementById("home"));
}
解决方案
你应该有一个刀片文件 (app.blade.php) 并将你的 React 应用程序的根放在正文中,如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<title> Example </title>
<meta name="csrf-token" content="{{ csrf_token() }}">
<link rel="stylesheet" href="/css/app.css">
</head>
<!-- Root of your React application -->
<div id="root"></div>
<!-- Scripts -->
<script src="{{ asset('js/app.js') }}" defer></script>
</html>
然后在您的 app.js 文件中,您应该将您选择的 Admin-LTE 代码粘贴到 BrowserRouter 组件中,如下所示:
import React, { useState, useEffect } from "react";
import ReactDOM from "react-dom";
import { BrowserRouter, Link, Route, Switch } from "react-router-dom";
function App() {
return (
<BrowserRouter>
{/* Place your Admin-LTE HTML theme code here */}
</BrowserRouter>
您应该使用 react-router-dom 提供的 Link 组件,而不是使用普通的 a href 作为链接,如下所示:
<div className="image">
<Link to="/home">
Home
</Link>
</div>
然后,无论您的主要内容在页面上的哪个位置,您想要更改而不刷新,您都需要放置在 Switch 组件中。里面有相关的路线,像这样:
<main className="py-4">
<Switch>
<Route path="/home">
<Home />
</Route>
</Switch>
</main>
不要忘记 npm install admin-lte react-router-dom 然后 require("admin-lte"); 在您的 bootstrap.js 文件中。
推荐阅读
- javascript - TypeScript - 将多个接口组合成一个
- python - Kubernetes部署内存占用高
- javascript - React DevTools 将组件显示为“正在加载...”
- asp.net-core - 复杂类——跨类实现
- nginx - nginx 提供静态 html 和代理
- python - 我编写了一个 python 代码来查找列表中的最大元素
- python - 如何在 Angular 应用程序中从画布中抓取表格数据
- javascript - jQuery 附加 Select Change() 事件
- java - 实体关系是否正确?
- dita - 可以使用 CSS 文件生成 PDF 输出吗?