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

成都建设诚信网站国外产品短视频拍摄

成都建设诚信网站,国外产品短视频拍摄,漳州正规网站建设公司,搜狗 优化网站文章目录一、题目二、答案#xff08;非标准#xff09;三、关键知识点1.Custom Hook关键点案例useMountuseDebounce2.TS 泛型关键点一、题目 完善自定义 Hook —— useArray #xff0c;使其能够完成 tryUseArray 组件中测试的功能#xff1a; 入参#xff1a;数组返回… 文章目录一、题目二、答案非标准三、关键知识点1.Custom Hook关键点案例useMountuseDebounce2.TS 泛型关键点一、题目 完善自定义 Hook —— useArray 使其能够完成 tryUseArray 组件中测试的功能 入参数组返回值 value最新状态的数组add添加元素removeIndex移除数组特定位置的元素clear清空数组 相关文件代码 src\utils\index.ts import { useEffect, useState } from react;export const useMount (cbk: () void) useEffect(() cbk(), []);export const useArray () {};src\tryUseArray.tsx import { useArray, useMount } from utils;const TryUseArray () {const persons: { name: string; age: number }[] [{ name: jack, age: 25 },{ name: ma, age: 22 },];const { value, clear, removeIndex, add } useArray(persons);useMount(() {// 期待这里报错Property notExist does not exist on type { name: string; age: number; }[].// console.log(value.notExist);// 期待这里报错Property age is missing in type { name: string; } but required in type { name: string; age: number; }.// add({ name: david });// 期待这里报错Argument of type string is not assignable to parameter of type number.// removeIndex(123);});return (div{/*期待: 点击以后增加 john */}button onClick{() add({ name: john, age: 22 })}add john/button{/*期待: 点击以后删除第一项*/}button onClick{() removeIndex(0)}remove 0/button{/*期待点击以后清空列表*/}button style{{ marginBottom: 50px }} onClick{() clear()}clear/button{value.map((person, index) (div key{index} style{{ marginBottom: 30px }}span style{{ color: red }}{index}/spanspan{person.name}/spanspan{person.age}/span/div))}/div); };export default TryUseArray;src\App.tsx import ./App.css; import TryUseArray from tryUseArray;function App() {return (div classNameAppTryUseArray //div); }export default App;答答 答 案案 案 在在 在 后后 后 面面 面 没没 没 有有 有 完完 完 成成 成 不不 不 要要 要 偷偷 偷 看看 看 哦哦 哦 二、答案非标准 import { useEffect, useState } from react;// 我的练习作业 // export const useArray T(array: T[]) { // const [value, setValue] useState(array) // const clear () setValue([]) // const removeIndex (index: number) setValue([...value].filter((item, _index) _index ! index)) // const add (item: item) setValue([...value, item])) // return { // value, clear, removeIndex, add // } // }export const useArray T(array: T[]) {const [value, setValue] useState(array);return {value,add: (item: T) setValue([...value, item]),removeIndex: (index: number) {const temp [...value];temp.splice(index, 1);setValue(temp);},clear: () setValue([]),}; };三、关键知识点 1.Custom Hook 官方文档自定义 Hook – React 关键点 定义 Custom Hook 是一个函数名字必须以 use 开头hook 只能在 React 函数组件 或其他 Hook 函数中调用普通 js/ts 函数中不可用相同的 Hook 不共享 state 重用状态逻辑的机制所有 state 和副作用都是完全隔离的不要在循环条件或嵌套函数中调用 Hook建议在 Hook 内部使用循环条件或嵌套函数React 16.8 中使用 Hook 规则 – React 案例 useMount 封装 export const useMount (cbk: () void) useEffect(() cbk(), []);调用 import { useMount } from utils;const [list, setList] useState([]);useMount(() {fetch(${apiUrl}/list).then(async (res) {if (res.ok) {setList(await res.json());}}); });useDebounce 封装 /*** param { 值 } val* param { 延时默认 1000 } delay* returns 在某段时间内多次变动后最终拿到的值delay 延迟的是存储在队列中的上一次变化*/ export const useDebounce V(val: V, delay: number 1000) {const [tempVal, setTempVal] useState(val);useEffect(() {// 每次在 val 变化后设置一个定时器const timeout setTimeout(() setTempVal(val), delay);// 每次在上一个 useEffect 处理完以后再运行useEffect 的天然功能即是在运行结束的 return 函数中清除上一个同一 useEffectreturn () clearTimeout(timeout);}, [val, delay]);return tempVal; };调用 import { useDebounce } from utils; // 对 param 进行防抖处理 const lastParam useDebounce(param); const [list, setList] useState([]);useEffect(() {fetch(// name${param.name}personId${param.personId}${apiUrl}/projects?${qs.stringify(lastParam)}).then(async (res) {if (res.ok) {setList(await res.json());}}); }, [lastParam]);注意区别于 节流 拓展学习 【笔记】Custom Hook 2.TS 泛型 官方文档 TypeScript: Documentation - Generics泛型(generic) - TypeScript 中文手册 关键点 不预先指定其具体的类型而在使用的时候再进行定义函数是对“值”的编程泛型是对“类型”的编程泛型是类型的变量 拓展学习 【笔记】TS 泛型
http://www.hkea.cn/news/14307764/

相关文章:

  • 做视频网站用什么云盘好政务网站开发方案
  • 企业网站建站元素怎么用html做移动网站
  • 抚顺网站建设技术员招聘阿里巴巴网站建设公司
  • 做网站公司郑州郑州的网站建设公司哪家好河南省建设厅证件查询官网
  • 整人关不掉的网站怎么做主机屋 wordpress
  • 移动网站建设流程六盘水城乡住房建设厅网站
  • wordpress站内301万网免费网站
  • 吉林大学学院网站建设群帝国cms更改网站ico
  • 在哪个彩票网站是小黄人做头像的wordpress突然很慢
  • apache建立多个网站公司没有备案了网站
  • 上海网站开发薪资网站开发时间段
  • 宁波 做网站的网络营销推广策略
  • 网站空间500m是什么意思中鑫华源建设投资集团网站
  • 网站站内优化怎么做臭事百科wordpress
  • 网站建设哪便宜群晖 wordpress 设置
  • 海淀网站开发的公司域名备案网站备案查询
  • 做镜像网站利润小程序登录不了怎么办
  • 制作一个网站的成本南昌网站app开发
  • 在哪个网站可以做试卷多作者wordpress插件
  • 镇江智能网站建设哪家好程序员自己做网站赚钱
  • 公司做企业网站深圳有哪些外贸公司
  • 专业网站建设必要性今天特大军事新闻事件
  • 邢台建设局网站上中标公示查询德阳手机网站建设
  • 网站首眉怎么做seo免费网站建设
  • 没有网站怎么做网络推广帮非法集资公司做网站违法吗
  • 地图网站抓取石景山富阳网站建设
  • 大学网站建设管理办法网站后台 全局配置
  • 专业的公司网站开发教育培训网站
  • 网站建设七大步骤怎么给网站做超链接
  • 白银市住房与建设局网站网页制作官方网站