优化用户体验的小点:乐观更新链路 双数据库查询

乐观更新链路

不等后端返回,乐观假设update成功,立刻更新ui,失败回滚

针对create delete update操作

js 复制代码
// 1. save current state (for rollback)
const prevCharts = [...charts]

// 2. update charts immediately
setChart(charts,filter(chart => chart.id !== chartId))
showSuccess('Chart deleted')

//3. then try api to avoid blockage 
try{
	await deleteChart(chartId)
} catch(error){
	setChart(prevCharts)
	showError('Failed to delete chart')
}
js 复制代码
//recent dashboard click
navigate('/dashboard/${dashboardId}', {
	state:{cacheData:dashboard}
})


// dashboard 页面显示之前的本地缓存 component receive cache data
const {state} = useLocation()
if(state?.cacheData){
	setDashboard(state.cacheData)
}

// 后台验证最新的数据展示到前端
fetchLatestDashboard(dashboardId).then(latest => {
	setDashboard(latest)
})

双数据库架构

  1. 一个数据库用于查询数据给用户观察
    • 数据仓库
    • 只读
    • 大数据
    • 链接pool
  2. 另一个数据用于记录用户操作情况
    • 高频读写 curd
    • 异步连接 (async避免阻塞)
    • 存储用户信息和行为记录
    • 事务支持

//todo 无Redux状态管理 SSE防抖更新 SQL自动修正

相关推荐
爱学习的程序媛20 小时前
【Web前端】前端用户体验优化全攻略
前端·ui·交互·web·ux·用户体验
2501_9083298520 小时前
Python入门:从零到一的第一个程序
jvm·数据库·python
Liu6288820 小时前
Web开发与API
jvm·数据库·python
m0_7434703720 小时前
Python字典与集合:高效数据管理的艺术
jvm·数据库·python
2501_9454235420 小时前
使用Scrapy框架构建分布式爬虫
jvm·数据库·python
yhole20 小时前
MySQL无法连接到本地localhost的解决办法2024.11.8
数据库·mysql·adb
2401_8512729920 小时前
使用Python进行量化交易入门
jvm·数据库·python
jinanmichael20 小时前
mysql用户名怎么看
数据库·mysql
李少兄20 小时前
企业资源计划(ERP)系统全景指南
java·前端·数据库·erp