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

上海网站建设代码网站优化 秦皇岛

上海网站建设代码,网站优化 秦皇岛,温江区网站建设,做100个垂直网站提示:本文根据b站尚硅谷2024最新鸿蒙开发HarmonyOS4.0鸿蒙NEXT星河版零基础教程课整理 链接指引 > 尚硅谷2024最新鸿蒙开发HarmonyOS4.0鸿蒙NEXT星河版零基础教程 文章目录 一、网络请求1.1 申请网络访问权限1.2 安装axios库1.2.1 配置环境变量1.2.2 第二步&…

提示:本文根据b站尚硅谷2024最新鸿蒙开发HarmonyOS4.0+鸿蒙NEXT星河版零基础教程课整理

链接指引 => 尚硅谷2024最新鸿蒙开发HarmonyOS4.0+鸿蒙NEXT星河版零基础教程


文章目录

  • 一、网络请求
    • 1.1 申请网络访问权限
    • 1.2 安装axios库
      • 1.2.1 配置环境变量
      • 1.2.2 第二步:配置环境变量
      • 1.3 安装axios
    • 1.3 axios快速入门
    • 1.4 axios拦截器
  • 二、应用级状态管理
    • 2.1 LocalStorage
    • 2.2 AppStorage
    • 2.3 PersistentStorage


一、网络请求

鸿蒙系统提供了http模块用于发送http请求,另外,OpenHarmony社区基于该模块将前端开发中常用的网络请求库axios移植到了鸿蒙系统,因此我们也可以在鸿蒙系统中使用axios发送http请求,下面重点为大家介绍axios的用法。

1.1 申请网络访问权限

默认情况下,应用只能访问有限的系统资源,若应用需要访问一些受保护的数据(照片、通讯录、位置等)或者功能(打电话、发短信、联网等),需要先申请相应的权限。鸿蒙系统的权限列表可参考官方文档。

权限的申请可分为如下两步
第一步:声明所需权限
开发者需要在entry/src/main/module.json5文件中声明所需权限,具体格式如下

{"module": {......"requestPermissions": [{"name": 'ohos.permission.******'}]}
}

第二步:申请授权

  • 如果目标权限的授权方式system_grant,开发者在完成第一步后,系统会在安装应用时自动为其进行权限预授予,开发者不需要做其他操作即可使用权限。
  • 如果目标权限的授权方式为是user_grant,开发者在完成第一步后,还需要在应用运行时弹窗请求用户授权,具体操作可参考官方文档。
    由于网络访问权限的授权方式为system_grant,因此只需完成第一步即可,具体内容如下
{"module": {......"requestPermissions": [{"name": 'ohos.permission.INTERNET'}]}
}

1.2 安装axios库

axios相当于鸿蒙应用项目的一个第三方库,鸿蒙应用项目使用ohpm管理(包括安装、卸载等)第三方库。除了axios,还有很多其他的第三方库可供开发者使用,所有的第三方库都收录在链接中。

1.2.1 配置环境变量

为方便执行ohpm命令,需先将ohpm的安装目录添加到操作系统的Path环境变量下,具体操作如下
第一步:查看ohpm安装目录
打开Deveco Studio设置界面,搜索ohpm

1111

1.2.2 第二步:配置环境变量

将上述目录添加到Path环境变量
222

完成上述环境变量的配置之后,便可在任意目录下执行ohpm命令了。

1.3 安装axios

点击Deveco Studio底部的Terminal选项卡,启动终端
333
之后在终端执行如下命令即可

ohpm i @ohos/axios

1.3 axios快速入门

第一步:导入axios

import axios from '@ohos/axios'

第二步:创建axios实例

const instance = axios.create({baseURL: 'http://<ip>:<port>',timeout: 2000
})

注意:需要根据实际情况替换上述的ip地址和端口号

第三步:发送http请求
创建axios实例后,便可通过该实例的api来发送各种http请求,常用的api定义如下

api功能
get(url, config?): Promise发送GET请求
delete(url, config?): Promise发送DELETE请求
post(url, data?, config?): Promise发送POST请求
put(url, data?, config?): Promise发送PUT请求

第四步:获取请求结果
上述api的返回值类型均为PromisePromiseJavaScript中用于表示异步操作结果的对象,若操作成功,其中会包含具体结果,若操作失败,其会包含错误的原因。在实际应用中,开发者可以通过该对象的then()方法来处理操作成功时的结果,通过catch()方法来处理操作失败的情况,例如

get(...).then((response:AxiosResponse)=>{//处理请求成功的结果...}).catch((error:AxiosError)=>{//处理请求失败的错误...})

AxiosResponseaxios定义的响应结果类型,默认情况下,通过axios发送的所有请求,其成功的响应结果都是该类型。其包含的属性如下

{//服务器返回的响应结果data: {},//服务器响应的 HTTP 状态码status: 200,//服务器响应的 HTTP 状态信息statusText: 'OK',// 服务器响应头headers: {},//axios请求的配置信息config: {},//生成此响应的请求信息request: {}
}

因此,response.data才是服务器返回的真实数据,具体处理逻辑如下

get(...).then((response:AxiosResponse)=>{//获取服务器返回的数据let data = response.data;//处理服务器返回的数据...}).catch((error:AxiosError)=>{//处理请求失败的错误...})

1.4 axios拦截器

axios可以分别为请求和响应配置拦截器,请求拦截器可在请求发送前进行拦截,响应拦截器可以在then()或者catch()方法执行前进行拦截,如下图所示

sddd
在拦截器中,开发者可以对请求的参数或者响应的结果做一些统一的处理,比如在请求拦截器中统一为所有请求增加token这一Header,在响应拦截器中统一处理错误响应。
拦截器的配置方式如下

请求拦截器

// 添加请求拦截器
instance.interceptors.request.use((config:InternalAxiosRequestConfig) => {// 对请求数据做点什么return config;
}, (error:AxiosError) => {// 对请求错误做些什么return Promise.reject(error);
});

响应拦截器

// 添加响应拦截器
instance.interceptors.response.use((response:AxiosResponse)=> {// 对响应数据做点什么return response;
}, (error:AxiosError)=> {// 对响应错误做点什么return Promise.reject(error);
});

二、应用级状态管理

第5章为大家介绍了一系列状态共享相关的装饰器(@State@Prop@Link@Provide@Consume等),但是这些装饰器仅能在两个组件之间共享状态,如果开发者需要在一个页面内的所有组件中共享状态,或者是在多个页面之间共享状态,这些装饰器便不再适用了,此时我们需要的就是应用级状态管理功能。

2.1 LocalStorage

LocalStorage用于存储页面级的状态数据,位于LocalStorage中的状态数据可以在一个页面内的所有组件中共享,其用法如下
第一步:创建LocalStorage实例,并初始化状态变量

let storage = new LocalStorage({ count: 0 });

第二步:将LocalStorage实例绑定到页面的入口组件

@Entry(storage)
@Component
struct Parent {build(){......}
}

第三步:在页面内的组件访问LocalStorage
ArkTs提供了两个装饰器用于访问LocalStorage,分别是@LocalStorageProp@LocalStorageLink,前者可以和LocalStorage实现单向同步,后者可以和LocalStorage实现双向同步,具体用法如下

父组件

let storage = new LocalStorage({ count: 0 });@Entry(storage)
@Component
struct Parent {//与storage中的count属性双向同步@LocalStorageLink('count') count: number = 0;build(){Child()}
}

子组件

@Component
struct Child {//与storage中的count属性单向同步@LocalStorageProp('count') count: number = 0;build(){...}
}

2.2 AppStorage

AppStorage用于存储应用级的状态数据,位于AppStorage中的状态数据可以在整个应用的所有组件中共享,其用法如下
第一步:初始化状态变量

AppStorage.SetOrCreate('count', 0)

第二步:在整个应用内的组件中访问AppStorage
ArkTs提供了两个装饰器用于访问AppStorage实例,分别是@StorageProp@StorageLink,前者可以和AppStorage实现单向同步,后者可以和AppStorage实现双向同步,具体用法如下

PageOne

AppStorage.SetOrCreate('count', 0)@Entry
@Component
struct PageOne {//与AppStorage中的count属性双向同步@StorageLink('count') count: number = 0;build(){...}
}

PageTwo

@Entry
@Component
struct PageTwo {//与AppStorage中的count属性单向同步@StorageProp('count') count: number = 0;build(){...}
}

2.3 PersistentStorage

LocalStorageAppStorage都是将状态数据保存在内存中,应用一旦退出,数据就会被清理,如果需要对数据进行持久化存储,就需要用到PersistentStorage,其用法如下
PersistentStorage可以将指定的AppStorage中的属性保存到磁盘中,并且PersistentStorageAppStorage的该属性会自动建立双向同步,开发者不能直接访问PersistentStorage中的属性,而只能通过AppStorage进行访问,具体操作如下

PersistentStorage.PersistProp('count', 0);@Entry
@Component
struct Index {@StorageLink('count') count: number = 0build() {Row() {Column() {// 应用退出时会保存当前结果。重新启动后,会显示上一次的保存结果Text(`${this.count}`).onClick(() => {this.count += 1;})}}}
}

文章转载自:
http://thanks.c7507.cn
http://overdraught.c7507.cn
http://onefold.c7507.cn
http://tylectomy.c7507.cn
http://laguna.c7507.cn
http://swink.c7507.cn
http://miscolor.c7507.cn
http://scalarly.c7507.cn
http://saleratus.c7507.cn
http://decharge.c7507.cn
http://phycomycete.c7507.cn
http://wurst.c7507.cn
http://limit.c7507.cn
http://cytogenous.c7507.cn
http://that.c7507.cn
http://evection.c7507.cn
http://overlie.c7507.cn
http://apace.c7507.cn
http://affirmance.c7507.cn
http://mne.c7507.cn
http://thomas.c7507.cn
http://alingual.c7507.cn
http://tenantable.c7507.cn
http://sulfid.c7507.cn
http://furitless.c7507.cn
http://secutor.c7507.cn
http://antilithic.c7507.cn
http://coagulant.c7507.cn
http://knickerbocker.c7507.cn
http://duplicability.c7507.cn
http://electrization.c7507.cn
http://ariadne.c7507.cn
http://saxtuba.c7507.cn
http://synesis.c7507.cn
http://few.c7507.cn
http://jaws.c7507.cn
http://erective.c7507.cn
http://radiolocate.c7507.cn
http://trendline.c7507.cn
http://banefully.c7507.cn
http://pepperidge.c7507.cn
http://eradiculose.c7507.cn
http://cabin.c7507.cn
http://nonsuch.c7507.cn
http://career.c7507.cn
http://misperceive.c7507.cn
http://emeter.c7507.cn
http://xeromorphic.c7507.cn
http://backstage.c7507.cn
http://galleryful.c7507.cn
http://introjection.c7507.cn
http://co.c7507.cn
http://ethnocentrism.c7507.cn
http://caseworker.c7507.cn
http://trendy.c7507.cn
http://antimicrobial.c7507.cn
http://nethermost.c7507.cn
http://intake.c7507.cn
http://while.c7507.cn
http://ionograpky.c7507.cn
http://oligophrenia.c7507.cn
http://californite.c7507.cn
http://civitan.c7507.cn
http://unharmed.c7507.cn
http://visking.c7507.cn
http://ironware.c7507.cn
http://laurestinus.c7507.cn
http://radiometeorograph.c7507.cn
http://metrics.c7507.cn
http://skyscraper.c7507.cn
http://reduplicate.c7507.cn
http://berserker.c7507.cn
http://appressed.c7507.cn
http://riblike.c7507.cn
http://abode.c7507.cn
http://pandh.c7507.cn
http://wellhead.c7507.cn
http://aphaeresis.c7507.cn
http://jazzy.c7507.cn
http://investigatory.c7507.cn
http://overturn.c7507.cn
http://cafeteria.c7507.cn
http://clinamen.c7507.cn
http://canzone.c7507.cn
http://geometrise.c7507.cn
http://abound.c7507.cn
http://calcic.c7507.cn
http://cohobate.c7507.cn
http://scend.c7507.cn
http://conditional.c7507.cn
http://glucosyltransferase.c7507.cn
http://springbuck.c7507.cn
http://isohel.c7507.cn
http://kymric.c7507.cn
http://glare.c7507.cn
http://nabob.c7507.cn
http://crystalline.c7507.cn
http://twosome.c7507.cn
http://hanefiyeh.c7507.cn
http://flyman.c7507.cn
http://www.zhongyajixie.com/news/71270.html

相关文章:

  • 扬中网站建设朋友圈广告推广文字
  • 自己做网站自己做SEO免费访问国外网站的app
  • 如何建立一个私人网站国内搜索网站排名
  • 自己做公众号引流到其他电影网站可以站长工具seo综合查询5g
  • 外贸独立网站做仿品新网站推广方法
  • 网站地图在线生成软文推广收费
  • 世界疫情最新数据排名表2022年网站怎么优化关键词
  • django 做网站赚钱免费网站制作教程
  • 网站佣金怎么做凭证许昌网络推广外包
  • 国外电商网站如何做icp备案seo快速排名外包
  • 浙江建设信息港网站查询分类信息网
  • 连云港商城网站开发设计免费h5制作网站
  • 企业网站开发技术题库网络关键词优化软件
  • 西安 房产网站建设电商seo搜索引擎优化
  • 免费建网站中文域名东莞网站快速排名提升
  • 手机站和微网站的区别qq群引流推广网站
  • 有口碑的大良网站建设搜狗收录提交入口
  • 谁有手机网站发几个吧网络营销渠道的特点
  • xml文件里做网站超链接网站广告投放收费标准
  • 专业制作网站cba目前排行
  • 广州网站排名百度人工服务在线咨询
  • 装置艺术那个网站做的好sem培训班
  • yw27777最新跳转接口seo黑帽技术
  • java web开发要学什么外贸网站推广seo
  • 温州建设网站制作百度app推广
  • 做动画视频的网站网站流量统计工具
  • ps做购物小网站微博推广费用一般多少
  • 广州企业网站建设多少钱网站优化联系
  • 平台卖货关键词优化排名软件案例
  • 公司的网站费怎样做会计分录网站建站公司