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

移动网站优化排名购物网站的设计与实现论文

移动网站优化排名,购物网站的设计与实现论文,怎样用电脑和网訨自己做网站,合肥网站制作前3名的PC端 安装指令#xff1a; npm create vitelatest react-ts-pro -- --template react-tsVite是一个框架无关的前端工具链#xff0c;可以快速的生成一个React TS的开发环境#xff0c;并且可以提供快速的开发体验说明#xff1a; 1. npm create vitelatest固定写法#…PC端 安装指令 npm create vitelatest react-ts-pro -- --template react-tsVite是一个框架无关的前端工具链可以快速的生成一个React TS的开发环境并且可以提供快速的开发体验说明 1. npm create vitelatest固定写法使用最新版本vite初始化项目 2. react-ts-pro 项目名称自定义 3. -- --template react-ts 指定项目模板为reactts 移动端mobile 1. 安装 npm create vitelatest react-jike-mobile -- --template react-ts2. 安装Ant Design Mobile npm i --save antd-mobile 初始化路由react-router-dom, 使用与我另一篇文章一模一样直接参考即可ReactRouter使用详解react-router-dom 1. 安装 npm i react-router-dom 配置路径别名使用CRA可参考cra(create-react-app)配置别名路径 以及Vscode联想路径配置 1. 安装插件 npm i types/node -D2. 修改vite.config.tsimport { defineConfig } from vite import react from vitejs/plugin-react// 配置别名路径安装插件后才有path import path from path // 如果报错path可以写成import * as path from path// https://vitejs.dev/config/ export default defineConfig({plugins: [react()],// 配置别名路径resolve: {alias: {: path.resolve(__dirname, ./src)}} })3. 修改tsconfig.json{compilerOptions: {// vscode联想配置baseUrl: ./,paths: {/*: [src/*]}} } 安装插件axios npm i axioshttp.ts封装代码如下// 封装axiosimport axios from axios;const httpInstance axios.create({baseURL: http://geek.itheima.net,timeout: 5000 });// 拦截器 httpInstance.interceptors.request.use(config {return config},error {return Promise.reject(error)} )httpInstance.interceptors.response.use(response {return response},error {return Promise.reject(error)} )export default httpInstance; 封装API模块-axios和ts的配合使用 场景axios提供了request泛型方法方便我们传入类型参数推导出接口返回值的类型 说明泛型参数Type的类型决定了res.data的类型具体演示代码如下import { http } from /utils;// 假设后端返回的类型结构是这个 // { // data: { // channels: [ // { // id: 1, // name: // } // ] // }, // nessage: // }/*** channel列表查询*/// 1. 定义通用泛型(根据后端接口返回的数据来定义) // data不是写死的因此用通用的TT代表泛型 export type ResTypeT {message: stringdata: T }// 2. 子项定义具体特有的接口类型 type ChannelItem {id: numbername: string }// 整体类型ChannelRes是data特有的类型 type ChannelRes {channels: ChannelItem[] }// 请求频道列表 export function fetchChannelAPI() {http.requestResTypeChannelRes({url: /channels}) }/*** 文章列表查询*/type ListItem {is_top: string,cover: {type: numberimage: string[]} }type ListRes {results: ListItem[]pre_timestamp: string }// 传参类型 type ReqParams {channel_id: stringtimestamp: string }export function fetchListAPI(params: ReqParams) {return http.requestResTypeListRes({url: /articles,params}) }组件内使用代码如下方案一 fetchChannelAPI().then(res {console.log(res.data) })方案二建议写法 useEffect(() {const getLists async () {try {const res await fetchListAPI();setLists(res.data);} catch (error) {throw new Error(fetch channel error)}}getLists(); }, []) ts基础数据渲染写法 import { useEffect, useState } from react; import { fetchChannelAPI, ChannelItem } from /apis/user;type ChannelItem {id: numbername: string }function Home() {const [channels, setChannels] useStateChannelItem[]([]);useEffect(() {// const getChannels async() {// try {// const res await fetchChannelAPI();// setChannels(res.data);// } catch (error) {// throw new Error(fetch channel error)// }// }// getChannels();}, [])return (divHome/div) }export default Home; ts基础数据渲染写法自定义hook优化 1. index.tsx代码如下import { useTabs } from ./useTabs;function Home() {const {channels} useTabs();return (divHomeul{channels.map(item li key{item.id}{item.name}/li)}/ul/div) }export default Home;// 抽离出业务部分封装成useTab 2. useTabs.tsx代码如下import { useEffect, useState } from react; import { fetchChannelAPI, ChannelItem } from /apis/user;function useTabs() {const [channels, setChannels] useStateChannelItem[]([]);useEffect(() {const getChannels async () {try {const res await fetchChannelAPI();setChannels(res.data);} catch (error) {throw new Error(fetch channel error)}}getChannels();}, [])return {channels} }export { useTabs }; 详情模块 - 路由跳转 1. Home组件代码如下// import { useTabs } from ./useTabs;import { useNavigate } from react-router-dom;function Home() {// const {channels} useTabs();const navigate useNavigate();const goDetail () {navigate(/detail?id159)}return (divHome{/* ul{channels.map(item li key{item.id}{item.name}/li)}/ul */}hr /button onClick{goDetail}Detail/button/div) }export default Home;2. Detail组件代码如下import { useEffect } from react; import { useSearchParams } from react-router-dom;function Detail() {const [params] useSearchParams();useEffect(() {const id params.get(id);console.log(id);}, [])return (divDetail/div) }export default Detail;
http://www.dnsts.com.cn/news/173050.html

相关文章:

  • 图表设计网站家政的网站怎么做
  • 歙县建设银行网站定制app开发软件
  • 安徽网站开发项目社区工作者有编制吗
  • 网站建设公司哪里有漳州哪里做网站
  • 招聘网站开发技术维护东莞网站建设行业翘楚
  • 有哪些好用的网站google广告投放技巧
  • 重庆建设工程信息网网站竞价推广渠道
  • 网站口碑推广做化工的在哪个网站做平台好
  • 响应式网站是什么情况珞珈学子网站建设
  • 辽宁省城乡和住房建设厅老网站友情链接检查工具
  • 本溪做网站长沙中企动力怎么样
  • 中国能建电子商务平台做优化需要发多少个网站
  • 彩票网站怎么做赚钱吗正规网站建设公司在哪里
  • 网站开发自我介绍男女做那种的的视频网站
  • 网站正能量入口做家教网站怎么样
  • 多少个网站利用网站文件下载做推广
  • 中山市有什么网站推广网站编程培训学校招生
  • ps个人网站设计wordpress换页
  • 深圳市住房建设与保障局官方网站一个人怎么开发自己的app
  • 网站建设费按多少年摊销做拍卖的网站有哪些
  • 百度搜首页南京网站优化报价
  • 赤峰市建设局网站free免费空间
  • 一般的企业网站开发价格深圳网络推广哪家
  • 优秀网站首页设计步骤wordpress发视频教程
  • 铜陵建设行业培训学校网站wordpress 显示文章固定链接
  • 西班牙网站后缀南昌汉邦网站建设
  • 几何背景生成器网站百度快照排名
  • 做网站一般图片多大威海优化推广
  • 企业网站的建设目的是什么python mysql开发网站开发
  • 企业做网站的费用企业品牌网站建设我们的优势