用Uniapp开发鸿蒙项目 八(上)

一、前言

经过前面的学习,项目已经有了页面跳转、列表、表单这些基础功能。但实际应用中,数据往往不是写死的,得从服务器获取,这就离不开网络请求啦!今天我就来给咱们的学习项目加上网络请求功能,比如从接口获取列表数据、提交表单数据到服务器,把学习过程好好记录下来,新手小伙伴也能跟着一步步实现~

二、Uniapp 网络请求基础

Uniapp 提供了​​uni.request​​方法来发起网络请求,不管是在鸿蒙、微信小程序还是其他平台,用法都差不多,很方便!它的基本语法是这样的:

javascript 复制代码
uni.request({
  url: '接口地址', // 比如https://xxx.com/api/data
  method: 'GET/POST等', // 请求方法
  data: { // 要传递的参数
    key1: 'value1',
    key2: 'value2'
  },
  success: (res) => { // 请求成功的回调
    console.log('请求成功', res.data);
  },
  fail: (err) => { // 请求失败的回调
    console.log('请求失败', err);
  }
});

三、给列表添加网络请求获取数据

(一)准备测试接口

创建一个模拟数据接口,在桌面创建一个名为db的文件夹,在里面命名一个demo1.json的文件

双击打开这个文件,建议使用vs Code 、DevEco Studio打开此文件。如果有其他更好的,则选更好的,在文件里面自己造如下数据:

然后在db文件夹上面输入cmd

在打开的命令提示符中输入以下代码

​敲回车后,显示以下页面则表示我们的这个模拟数据服务启动成功,或者在浏览器中输入​​http://localhost:2345/list​​如果有数据也代表服务启动成功

(二)修改 user 页面列表代码

打开​​pages/user/user.uvue​​​,把原来写死的​​listData​​改成通过网络请求获取数据:

xml 复制代码
<template>
  <view class="user-container">
    <!-- List 列表 -->
	<div>
		<div class="item" v-for="item  in  listData" :key="item.id">
			<text class="td">{{item.title}}</text>
			<text class="td">{{item.desc}}</text>
			<button @click="goToDetail(item)" class="td">点击跳转</button>
           <navigator :url="'/pages/detail/detail?item='+ JSON.stringify(item)" hover-class="navigator-hover" class="td">
				  <button type="default">跳转</button>
			</navigator>
		
		</div>
			
	</div>
  </view>
</template>

<script>
export default {
  data() {
    return {
      listData: [] // 初始化为空数组,等待请求数据填充
    };
  },
  onLoad() {
    this.getListData(); // 页面加载时发起请求
  },
  methods: {
    goBack() {
      uni.navigateBack();
    },
    goToDetail(item) {
      uni.navigateTo({
        url: '/pages/detail/detail?item=' + JSON.stringify(item)
      });
    },
    getListData() {
      uni.request({
        url: 'http://10.0.2.2:2345/list', // 测试接口地址
        method: 'GET',
        success: (res) => {
          if (res.statusCode === 200) { // 请求成功
		  
            this.listData = res.data; // 把返回的数据赋值给listData
			console.log(this.listData+"成功")
			console.log(res)
          } else {
            uni.showToast({
              title: '请求失败,请重试',
              icon: 'none'
            });
          }
        },
        fail: (err) => {
          console.log('请求失败', err);
          uni.showToast({
            title: '网络出错啦',
            icon: 'none'
          });
        }
      });
    }
  }
};
</script>

<style lang="scss">
	.item{
		display: flex;
		flex-direction: row;
		.td{
			flex: 1;
		}
	}
</style>

注:http://localhost:2345/list是本机(预览器)使用,​​http://10.0.2.2:2345/list​(http://10.0.2.2:2345/list)​这个是模拟器使用

这里在​​onLoad​​​生命周期里调用​​getListData​​​方法发起请求,成功的话就把返回的数据放到​​listData​​​里,页面会自动更新列表;失败的话用​​uni.showToast​​提示用户。

页面效果:

##Uniapp##三方框架##商务##

相关推荐
东风破_5 小时前
danci 项目(三):从 JSON 数据到 AI Coding,真实项目里的数据清洗、Prompt 和工程规范
前端·后端·node.js
东风破_6 小时前
danci 项目(一):从需求到架构,一个单词学习系统为什么会这样设计
前端·后端·node.js
蒲公英eric6 小时前
从客户端到服务端:DVWA DOM 型 XSS 模块完整漏洞分析教程
前端·web安全·ai·xss·dvwa·ai安全
单线程_016 小时前
从案例分析 Vue3 Tokenizer+Parser 源码三
前端·javascript·vue.js
顶点多余7 小时前
那些在算法中适合巩固的知识点---1
java·前端·算法
Setsuna_F_Seiei7 小时前
前端转型 Agent 开发 03 之 Agent Tools - 给 Agent 装上手脚
前端·agent·ai编程
jay神7 小时前
【计算机毕业设计】基于SpringBoot的程序教学辅助系统
java·前端·vue.js·spring boot·后端·毕业设计·课程设计
kyriewen10 小时前
我装了30多个Skill,给AI安排了8个岗位
前端·javascript·ai编程
风骏时光牛马10 小时前
大模型落地实践中的技术选型思路与方案对比
前端
IT_陈寒10 小时前
Vite打包时的静态资源坑,我帮你踩过了
前端·人工智能·后端