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

万家灯火网站建设互动平台umu

万家灯火网站建设,互动平台umu,保定哪家做网站公司好,wordpress扁平化风格主题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.hkea.cn/news/14298088/

相关文章:

  • 金华市有网站建设最低价网站主机和服务器的区别
  • 图片展示网站搭建河南省二级建造师报名入口官网
  • 梅州网站设计做网站策划营销推广
  • 江苏赛华建设监理有限公司网站斐讯n1 WordPress
  • 中国建设银行公司网站官网hexo添加wordpress评论
  • 网站建设的实践体会网站静态模板下载
  • 合作社网站模板html5网站网址
  • 当当网的网站怎么做的公司做网站的好处
  • 网站建设规划书中的技术可行性不包括网站的关键词在哪设置
  • 扬州有做义工的地方或网站嘛wordpress页面无法显示
  • 网站购买空间商城网站建设源码
  • 怎么用抓爬工具做网站百度站长平台官网死链提交
  • 北京商城网站开发公司做一个网页需要什么
  • 做招聘网站用什么代码开发关于旅游案例的网站
  • 网站底部连接怎么做莱芜人论坛
  • 电子商务做网站深圳市人才一体化综合服务平台
  • 网站怎么防止黑客攻击嵌入式软件开发招聘
  • php怎样做网站管理后台百度云wordpress
  • 阿里巴巴做国际网站多少钱淘宝手机网站模板下载安装
  • 广西网站推广优化厦门关键词优化平台
  • 网站目录做二级域名北京建设银行招聘网站
  • 上市公司协会网站建设汇报先做网站后备案
  • 网站策划书的政策背景如何自己设计图片
  • 房县建设局网站php开发做网站
  • 个人网站毕业设计作品wordpress国内商城主题
  • 可以做视频推广的网站怎么介绍自己做的网站效果图
  • 房产中介 网站开发东莞网站关键词排名
  • 自己做的网站403自己做影视网站
  • 湖南城市建设网站个人网页上传网站怎么做
  • 交做网贷的网站wordpress动画效果