【uniapp】新闻列表+跳转详情页+评论展示(uni.request请求接口)

uniapp uni.request请求接口

1、接口

接口地址

2、页面

pages/list/list.vue-列表页面

pages/details/details.vue-详情页面

API 功能
uni.navigateTo(OBJECT) 页面跳转
uni.request(OBJECT) 发起网络请求
c 复制代码
pages/list/list.vue
<template>
	<view>
		<view class="out">
			<view class="row" v-for="item in listArr" :key="item.id" @click="clickItem(item.id)">
				<view class="title">{{item.title}}</view>
				<view class="content">{{item.body}}</view>
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				listArr:[]
			};
		},
		methods:{
			getData(){
				uni.request({
					url:"https://jsonplaceholder.typicode.com/posts",
					success:res=>{
						// console.log(res)
						this.listArr= res.data
					}
				})
			},
			clickItem(e){
				console.log(e)
				uni.navigateTo({
					url:"/pages/details/details?id="+e
					//地址拼接
				})
			}
		},
		onLoad() {
			this.getData()
			
			uni.setNavigationBarTitle({
				title:"新闻列表"
			})
			uni.setNavigationBarColor({
				backgroundColor:"#007aff",
				frontColor:"#ffffff"
			})			
		}
	}
</script>

<style lang="scss">
.out{
	padding: 50rpx 30rpx;
	.row{
		padding: 20rpx 0;
		border-bottom: 1rpx dotted #e4e4e4;
		.title{
			font-size: 36rpx;
			padding-bottom: 15rpx;
			color: #333;
		}
		.content{
			font-size: 28rpx;
		}
	}
}
</style>
c 复制代码
pages/details/details.vue
<template>
	<view>
		<view class="detail">
			<view class="title">{{objData.title}}</view>
			<view class="content">{{objData.body}}</view>
		</view>
		
		<view class="comments">
			<view class="text">Comments</view>
			
			<view class="row" v-for="item in comments" :key="item.id">
				<view class="top">
					<view class="name">{{item.name}}</view>
					<view class="mail">{{item.email}}</view>
				</view>
				<view class="body">{{item.body}}</view>
			</view>
			
		</view>
	
	</view>
</template>

<script>
	export default {
		data() {
			return {
				objData:{},
				id:1,
				comments:[]
			};
		},
		onLoad(e){
			this.id=e.id
			this.getDetail()
			this.getComments()
			// console.log(this.id)
		},
		methods:{
			getDetail(){
				uni.showLoading({
					title:"数据加载中",
					mask:true
				})
				uni.request({
					url:"https://jsonplaceholder.typicode.com/posts/" +  this.id,
					success:res=>{
						// console.log(res)
						this.objData=res.data
					},
					complete:()=>{
						uni.hideLoading()
						//请求完成隐藏弹窗
					}
				})
			},
			getComments(){
				uni.request({
					url:`https://jsonplaceholder.typicode.com/posts/${this.id}/comments`,
					//地址拼接,使用``,变量使用${}
					success:res=>{
						// console.log(res)
						this.comments=res.data
					}
				})
			}
		}
	}
</script>

<style lang="scss">
.detail{
	padding: 30rpx;
	.title{
		font-size: 46rpx;
		color: #000;
		padding-bottom: 20rpx;
	}
	.content{
		font-size: 30rpx;
		color: #666;
		padding-bottom: 60rpx;
	}
}
.comments{
	padding: 30rpx;
	background: #f8f8f8;
	.text{
		font-size: 46rpx;
		margin-bottom: 30rpx;
	}
	.row{
		border-bottom: 1px solid #e8e8e8;
		padding: 20rpx 0;
		.top{
			display: flex;
			justify-content: space-between;
			font-size: 22rpx;
			color: #999;
			padding-bottom: 15rpx;
		}
		.body{
			font-size: 28rpx;
			color: #555;
		}
	}
}
</style>

3、效果图

相关推荐
老李不敲代码2 分钟前
榕壹云搭子系统技术解析:基于Spring Boot+MySQL+UniApp的同城社交平台开发实践
spring boot·mysql·微信小程序·uni-app·软件需求
七七小报37 分钟前
uniapp-商城-54-后台 新增商品(页面布局)
uni-app
肥肥呀呀呀38 分钟前
在Flutter上如何实现按钮的拖拽效果
前端·javascript·flutter
Zero1017131 小时前
【React的useMemo钩子详解】
前端·react.js·前端框架
养军博客1 小时前
spring boot3.0自定义校验注解:文章状态校验示例
java·前端·spring boot
uperficialyu1 小时前
2025年01月10日浙江鑫越系统科技前端面试
前端·科技·面试
付朝鲜2 小时前
用自写的jQuery库+Ajax实现了省市联动
java·前端·javascript·ajax·jquery
coderYYY2 小时前
多个el-form-item两列布局排齐且el-select/el-input组件宽度撑满
前端·javascript·vue.js·elementui·前端框架
荔枝吖2 小时前
项目中会出现的css样式
前端·css·html
Dontla2 小时前
何时需要import css文件?怎么知道需要导入哪些css文件?为什么webpack不提示CSS导入?(导入css导入规则、css导入规范)
前端·css·webpack