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

网站底部图标代码校园网站建设费用

网站底部图标代码,校园网站建设费用,企业官网建站网站,想学学做网站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// 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.zqtcl.cn/news/120403/

相关文章:

  • 免费建网站哪个平台好php 未定义函数wordpress
  • 个人网站 域名选择郑州那家做网站便宜
  • 网站建设技术合伙人的技术股份全国免费发布信息网站大全
  • 兼职网站平台有哪些新手怎么学做网站
  • 有没有直接做网站的软件iis一个文件夹配置多个网站
  • 网站怎么屏蔽ip访问信息发布网站建设
  • 陕西省住房城乡建设厅网站管理中心电信服务器
  • 外国优秀网站设计程序员做任务的网站
  • 购物网站项目经验开发一个游戏软件需要多少钱
  • 专业的大连网站建设电商网站支付方案
  • 手机如何建设网站首页株洲搜索引擎优化
  • 辉县市建设局网站制作网站站用的软件下载
  • 什么网站广告做多有没有不花钱建设网站的方法
  • 网站开发技术总监面试题五大门户网站分别是
  • 福州自助建设网站网站开发工具蜡笔小新
  • 扬州市住房和城乡建设网站html5 后台网站模板
  • 网站建设与设计意义宜兴做宠物的网站
  • 苏州建设工程人才招聘网信息网站wordpress前端库加速
  • 浙江手机版建站系统信息应用商店下载app
  • 广告投放网站动画设计模板
  • 网站发外链的好处页面跳转 英文
  • 黑链 对网站的影响网页小游戏网站有哪些
  • wordpress 网站卡做百度移动网站排名
  • 金融企业网站整站源码网站需要写哪些内容
  • 重庆做网站的网络公司河北建设厅官方网站八大员考试
  • 网站域名缴费服装企业网站建设现状
  • 南阳建设网站哪家好做金融网站
  • 挖矿网站怎么做域名注册需要多少钱?
  • 哈尔滨制作网站企业各位给推荐个网站
  • 程序员做网站类的网站犯法吗wordpress源码系统下载