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

广州 网站开发 公司二级建造师执业资格考试

广州 网站开发 公司,二级建造师执业资格考试,企业网站在线留言,常用的网络推广的方法有哪些用法 乐观更新 发起异步请求时,先假设请求会成功立即更新 UI 给用户反馈若请求最终失败,再将 UI 恢复到之前的状态 const [optimisticState, addOptimistic] useOptimistic(state, updateFn) 参数 state:实际值,可以是 useSta…

用法


乐观更新

  • 发起异步请求时,先假设请求会成功
  • 立即更新 UI 给用户反馈
  • 若请求最终失败,再将 UI 恢复到之前的状态

const [optimisticState, addOptimistic] = useOptimistic(state, updateFn)

参数
state:实际值,可以是 useStateuseReduceruseContextprops
updateFn:纯函数

  • currentState
  • optimisticValue

返回值
optimisticState:乐观值

  • 正常情况下:和 state 实际值一致
  • 调用 addOptimistic 后,是 updateFn 的返回值

addOptimistic:调用updateFn,接收任意类型的 optimisticValue


注意点

  1. 要在 form ActionstartTransition 里面调用 addOptimistic
  2. 异步操作结束(无论成功还是失败),乐观值都会自动恢复成 state
    异步操作成功,需要手动 setState 更新实际值,从而更新 useOptimisticstate
    异步操作失败,不用管

测试代码

import React, { useState, useOptimistic, startTransition } from "react";// 模拟异步点赞请求,考虑请求失败的情况
const asyncLikePost = (postId) => {return new Promise((resolve, reject) => {setTimeout(() => {// 模拟 50% 的失败概率if (Math.random() < 0.5) {reject(new Error("点赞失败"));} else {resolve();}}, 3000);});
};const Post = ({ post }) => {const [likes, setLikes] = useState(post.likes);const [optimisticLikes, addOptimisticLikes] = useOptimistic(likes,(currentLikes, optimisticValue) => currentLikes + 1);const [error, setError] = useState(null);const handleLike = function handleLike() {startTransition(async () => {addOptimisticLikes();try {await asyncLikePost(post.id);setLikes((prevLikes) => prevLikes + 1);setError(null);} catch (error) {setError(error.message);}});};return (<div><p>{post.title}</p><p>实际点赞数: {likes}</p><p>乐观点赞数: {optimisticLikes}</p>{error && <p style={{ color: "red" }}>{error}</p>}<button onClick={handleLike}>点赞</button></div>);
};const PostList = () => {const posts = [{ id: 1, title: "帖子1", likes: 10 },{ id: 2, title: "帖子2", likes: 20 },];return (<div>{posts.map((post) => (<Post key={post.id} post={post} />))}</div>);
};export default function App() {return (<div><h1>帖子列表</h1><PostList /></div>);
}

文章转载自:

http://rSkLxeuz.zrdhd.cn
http://EtawXNlD.zrdhd.cn
http://LAGk3JiE.zrdhd.cn
http://uvoHODPy.zrdhd.cn
http://ZIgGbJIJ.zrdhd.cn
http://Ntp6QUzs.zrdhd.cn
http://RkEDVdOh.zrdhd.cn
http://5kG638ZG.zrdhd.cn
http://IkXGVPFi.zrdhd.cn
http://kjil3jgL.zrdhd.cn
http://jg9mAQSh.zrdhd.cn
http://oaxuXE0c.zrdhd.cn
http://BVxQ2yCB.zrdhd.cn
http://1p38DjUV.zrdhd.cn
http://hcRI4gIh.zrdhd.cn
http://kOcOOUa5.zrdhd.cn
http://jXigThBu.zrdhd.cn
http://QtxJ67d8.zrdhd.cn
http://hsEoHSJp.zrdhd.cn
http://ASGHq2h4.zrdhd.cn
http://EmPxuBuH.zrdhd.cn
http://0VSQFVgF.zrdhd.cn
http://05YNmJa3.zrdhd.cn
http://w5GeJqCV.zrdhd.cn
http://kUROcKue.zrdhd.cn
http://TsBNN5g2.zrdhd.cn
http://KzNmCBPN.zrdhd.cn
http://Ew9UdntM.zrdhd.cn
http://TV8Ed0tS.zrdhd.cn
http://9nW0Ch0h.zrdhd.cn
http://www.dtcms.com/wzjs/771442.html

相关文章:

  • 基本信息型营销网站有哪些sem账户托管公司
  • 单页营销型网站模板怎样做原创短视频网站
  • dedecms口腔医院类网站模板 织梦网站模板长沙大型网络网站制作公司
  • 小游戏网站怎么做怎么上网站
  • 制作网站建设策划方案网站app制作
  • 网站开发一般流程图基于js原生的新闻类静态网站建设
  • 银川住房和城乡建设局网站做网站流程
  • 个人网站前置审批项购物网站建设价格一览表
  • 浙江省工程建设管理协会网站网站文章分类
  • 网站建设制作设计营销公司南宁赶集网站建设多少钱
  • 旅游网站建设模板下载跨境电商免费开店的有哪些
  • 建设体育课程基地网站怎么做网站建设
  • 特色的合肥网站建设绍兴做公司网站的公司
  • 短信验证码接码网站建设分享设计的网站
  • 邹城市建设局网站网页制作及欣赏
  • 东莞出租车公司黑帽seo排名
  • 企业网站优化平台wordpress 教程主题
  • 微信网站特征网站建设运维合同
  • 十大国外室内设计网站公众号模板编辑器
  • 网站建设套餐报万户高端网站建设
  • jsp网站访问万维网免费用搭建网站
  • 网站备案信息填写dw制作个人网页代码
  • 设计网站账号如何申请网站域名注册
  • 帮老板做网站网站建设报价比较表
  • 三亚制作网站学网站开发在大学
  • 遵义做手机网站建设wordpress首页视频播放
  • 网站系统有哪些榆林网站开发
  • 制作网站的固定成本网站推广的方法枫子
  • 网站设计论文提纲网站建设意义
  • html在线编辑网站网站主页设计教程