【TypeScript】使用 TS 实现访问历史记录功能,刷新页面后,展示访问历史记录,记录包含:次数和时间。

前言

今天,我将带领大家一起使用TypeScript实现一个引人注目的功能:访问历史记录。随着互联网的快速发展,用户对于网页的访问和浏览已成为日常生活中不可或缺的一部分。然而,当我们刷新页面时,原本的浏览历史记录就会消失,给用户带来一定的不便。为了改善用户体验,我们将开发一个功能,使得用户能够在页面刷新后依然保留访问历史记录,轻松回溯之前的浏览轨迹。

image.png
数据格式:[ { count: number, time: string } ]

步骤一:封装 年|月|日|时|分|秒 格式化时间和补0 函数

代码截图如下:

1689600313098.jpg
源码如下:

// // 数据格式;
// ;[ { count: number, time: string } ]


// ! #2. 封装月日 时分秒 两位数 补0的函数
// const padZero: (num: number) => String = (num) => {
const padZero = (num: number): String => {
	return num.toString().padStart(2, '0')
}
// ! #1. 封装年月日 时分秒 格式化时间函数
const formatTime = (date?: Date | string): String => {
	// (1) 如果没有传递参数,就是当前时间
	if (!date) date = new Date()
	// (2) 如果传递的是字符串,把字符串转换成日期对象
	if (typeof date === 'string') date = new Date(date)
	let year = date.getFullYear()
	let month = date.getMonth() + 1
	let day = date.getDate()
	let hours = date.getHours()
	let minutes = date.getMinutes()
	let seconds = date.getSeconds()
	// (3) 将年月日时分秒字符串拼接在一起
	return `${year}-${padZero(month)}-${padZero(day)} ${padZero(hours)}:${padZero(minutes)}:${padZero(seconds)}`
}
console.log(formatTime()) //不传参数,返回当前的日期
console.log(formatTime('2023-6-16')) //支持
console.log(formatTime(new Date('2023-6-28'))) //支持对象 当前的年月日,2023-6-28

控制台打印如下:

1.jpg

步骤二:定义数据类型+获取数据的方法

代码截图如下:

image.png
源码如下:

// ! #3. 定义数据类型
type List = { count: number; time: string }[]


// ! #4. 获取数据的方法
const KEY: 'KEY' = 'KEY'
const getData = (): List => {
	// JSON.parse 的参数要是string
	// 而localStorage.getItem 获取到的结果可能是 null
	// JSON.parse() 得到的结果可以是任意类型
	return JSON.parse(localStorage.getItem('KEY') || '[]') as List
}

步骤三:储存数据的方法+渲染数据

代码截图如下:

image.png
源码如下:

// ! #5. 储存数据的方法
const saveDataToLocal = (): void => {
	// 先获取本地数据
	const arr: List = getData()
	arr.push({
		count: arr.length ? arr[arr.length - 1].count + 1 : 1,
		time: formatTime()
	})
	localStorage.setItem(KEY, JSON.stringify(arr))
}

// ! #6. 渲染函数
const render = () => {
	saveDataToLocal()
	const arr = getData()
	// const IApp = document.querySelector('#app') as HTMLDivElement   // 断言方法
	const IApp = document.querySelector('#app')
	if (IApp) {
		IApp.innerHTML = arr.map((item) => `<li>第 ${item.count} 次访问,时间${item.time} </li>`).join('')
	}
}
render()

export {}

结果呈现如下:

image.png

结尾

通过本篇博客,我们成功地使用TypeScript实现了一个简单但实用的访问历史记录功能。现在用户可以在页面刷新后依然保留其访问历史记录,方便他们回溯之前的访问情况。希望这个功能能为您的项目带来更好的用户体验和导航功能。如果您有任何问题或建议,请随时留言,我将竭诚为您解答。谢谢阅读!

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MY01IhmY' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片