当前位置: 首页 > news >正文

社区网站制作教程最佳磁力引擎吧

社区网站制作教程,最佳磁力引擎吧,大连哪家网站建设好,可以做编程题的网站提示:reactrouter6.4版本,与reactrouter5.0的版本用法有区别,互不兼容需注意 文章目录 前言一、创建项目二、新建文件并引入react-router-dom、antd三、配置路由跳转四、效果五、遇到的问题六、参考文档总结 前言 需求:新建react项…

提示:reactrouter6.4+版本,与reactrouter5.0的版本用法有区别,互不兼容需注意

文章目录

  • 前言
  • 一、创建项目
  • 二、新建文件并引入react-router-dom、antd
  • 三、配置路由跳转
  • 四、效果
  • 五、遇到的问题
  • 六、参考文档
  • 总结


前言

需求:新建react项目,react-router-dom配置路由,引入antd

一、创建项目

1、创建与安装

npx create-react-app my-react-app
cd my-react-app

项目结构
在这里插入图片描述

npm install react-router-dom
npm install antd –save

在这里插入图片描述
2、修改文件
app.js

import './App.css';
function App() {return (<div>my react app</div>);
}
export default App;

app.css

.App {text-align: center;
}

3、启动预览

npm start

在这里插入图片描述

二、新建文件并引入react-router-dom、antd

1、新建文件

head.js、home.js、my.js、order.js、pay.js内容基本一致,贴一个例子,其余修改对应值即可

import React from 'react';class Pay extends React.Component {render() {return <div>Pay</div>;}
}
export default Pay;

在这里插入图片描述
main.js

import React from 'react';
import { Outlet } from "react-router-dom";
class Main extends React.Component {render() {return <div><Outlet /></div>;}
}
export default Main;

side.js

import React from 'react';
import Routes from '../routes';
import { Menu } from 'antd';
import { useNavigate } from "react-router-dom";
let menus = [];
Routes.forEach((item,index)=>{let obj = {key:index,label:item.label,}if(item.children){ item.children.forEach((citem,i)=>{citem.key=index+'-'+i;});obj.children = item.children}menus.push(obj);
});
export default function Side() {const navigate = useNavigate();function goPath(e){let keys = e.key.split('-');let route,cRoute;route = Routes[keys[0]];if(route.children){cRoute = route.children[keys[1]];}let path = route.path + (cRoute?'/'+cRoute.path:'');navigate(path);}return <div><MenudefaultSelectedKeys={['0']}defaultOpenKeys={['1']}mode="inline"theme="dark"items={menus}onClick={goPath}/></div>;
}

routes/index.js

import Home from '../components/home';
import My from '../components/my';
import Order from '../components/order';
import Pay from '../components/pay';
import Main from '../components/main';const Routes = [{path: "/",label:'首页',element: <Home/>,},{path: "main",label:'业务',element: <Main/>,children:[{path: "order",label:'订单',element: <Order/>,},{path: "pay",label:'支付信息',element: <Pay/>,},]},{path: "my",label:'我的',element: <My/>,},
];
export default Routes;

2、新建后文件结构
在这里插入图片描述

三、配置路由跳转

1、修改App.js和App.css文件
App.js

import { BrowserRouter ,Route,Routes} from "react-router-dom";
import './App.css';
import routes from './routes';
import Head from './components/head';
import Side from './components/side';
function renderRoute(){let arr = [];routes.forEach((item,i)=>{if(item.children){item.children.forEach((citem,ci)=>{arr.push(<Route key={i+'-'+ci} path={item.path+'/'+citem.path} element={citem.element}></Route>);})}else{arr.push(<Route key={i} path={item.path} element={item.element}></Route>);}})return arr;
}function App() {return (<div className="App"><BrowserRouter><div className='app_head'><Head/></div><div className='app_side'><Side/></div> <div className='app_main'><Routes>{ renderRoute() }</Routes></div> </BrowserRouter></div>);
}
export default App;

App.css

.App {text-align: center;position: absolute;top: 0;left: 0;right: 0;bottom: 0;
}
.app_head{position: absolute;top: 0;left: 0;width: 100%;height: 64px;background-color: #dbeff3;
}
.app_side{position: absolute;top: 64px;left: 0;bottom: 0;width: 320px;background-color: #707472;
}
.app_main{position: absolute;top: 64px;left: 320px;bottom: 0;right: 0;background-color: #fff;
}

四、效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、遇到的问题

在这里插入图片描述

useNavigate必须在router component里使用,side.js里调用的useNavigate,所以side
componet必须在BrowserRouter里

app.js错误写法

import { BrowserRouter ,Route,Routes} from "react-router-dom";
import './App.css';
import routes from './routes';
import Head from './components/head';
import Side from './components/side';
function renderRoute(){let arr = [];routes.forEach((item,i)=>{if(item.children){item.children.forEach((citem,ci)=>{arr.push(<Route key={i+'-'+ci} path={item.path+'/'+citem.path} element={citem.element}></Route>);})}else{arr.push(<Route key={i} path={item.path} element={item.element}></Route>);}})return arr;
}function App() {return (<div className="App"><div className='app_head'><Head/></div><div className='app_side'><Side/></div> <BrowserRouter><div className='app_main'><Routes>{ renderRoute() }</Routes></div> </BrowserRouter></div>);
}
export default App;

在这里插入图片描述在这里插入图片描述

useNavigate应该放在一个react function component里

side.js错误写法

import React from 'react';
import Routes from '../routes';
import { Menu } from 'antd';
import { useNavigate } from "react-router-dom";
let menus = [];
Routes.forEach((item,index)=>{let obj = {key:index,label:item.label,}if(item.children){ item.children.forEach((citem,i)=>{citem.key=index+'-'+i;});obj.children = item.children}menus.push(obj);
});
const navigate = useNavigate();
class Side extends React.Component {render() {function goPath(e){let keys = e.key.split('-');let route,cRoute;route = Routes[keys[0]];if(route.children){cRoute = route.children[keys[1]];}let path = route.path + (cRoute?'/'+cRoute.path:'');navigate(path);}return <div><MenudefaultSelectedKeys={['0']}defaultOpenKeys={['1']}mode="inline"theme="dark"items={menus}onClick={goPath}/></div>;}
}
export default Side;

在这里插入图片描述

useNavigate应该放在一个react function component里,而不是一个class component里

side.js错误写法

import React from 'react';
import Routes from '../routes';
import { Menu } from 'antd';
import { useNavigate } from "react-router-dom";
let menus = [];
Routes.forEach((item,index)=>{let obj = {key:index,label:item.label,}if(item.children){ item.children.forEach((citem,i)=>{citem.key=index+'-'+i;});obj.children = item.children}menus.push(obj);
});
class Side extends React.Component {render() {const navigate = useNavigate();function goPath(e){let keys = e.key.split('-');let route,cRoute;route = Routes[keys[0]];if(route.children){cRoute = route.children[keys[1]];}let path = route.path + (cRoute?'/'+cRoute.path:'');navigate(path);}return <div><MenudefaultSelectedKeys={['0']}defaultOpenKeys={['1']}mode="inline"theme="dark"items={menus}onClick={goPath}/></div>;}
}
export default Side;

六、参考文档

react中文官网
reactrouter官网
antd官网

总结

踩坑路漫漫长@~@

http://www.jinmujx.cn/news/109271.html

相关文章:

  • 多媒体教学网站开发的一般步骤关键词优化方法
  • 网站突然消失了石家庄seo代理商
  • 武汉网站建设网站推广网络营销做得比较好的企业
  • 做1688网站到哪里找图片谷歌全球营销
  • 制作网站高手网站推广网络营销方案
  • 网站导航结构设计网络营销师课程
  • 昆明房产网站建设怎么做好推广和营销
  • 网吧网站怎么做微信如何引流推广精准加人
  • 公司企业文化内容跨境电商seo是什么意思
  • 网络推广员是干嘛的网站seo完整seo优化方案
  • 洛阳市政建设集团网站网站的排名优化怎么做
  • 做外贸网站怎么访问外国网站百度视频
  • 网站怎么做才 吸引人福清市百度seo
  • 营销型网站建设公司易网拓近期重大新闻事件10条
  • 嘉兴简单建站今日国内新闻头条新闻
  • 网站解析后怎么做新东方烹饪学校学费一年多少钱
  • 做的比较好的猎头网站某网站搜索引擎优化
  • wordpress多重分类seo线下培训机构
  • 学php网站开发seo是什么姓
  • 织梦做商城网站百度如何发布作品
  • 可以做简历的网站天津seo博客
  • 杭州住房城乡建设网站查询北京seo助理
  • 哪里有建设网站中的视频下载百度认证号码平台
  • 珠海微网站制作什么是网络营销含义
  • 网站上传到虚拟服务器win7优化工具
  • 多网站管理网络营销所学课程
  • 怎么做最火的视频网站最近一周热点新闻
  • 电子政务网站系统网站推广上首页
  • 本地生活服务网站怎么做百度seo软件首选帝搜软件
  • 邢台提供网站建设公司电话网络广告投放网站