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

优质ppt网站wordpress vip会员系统

优质ppt网站,wordpress vip会员系统,做企业网站设计,汕头网站建设哪家好1.实现功能(ts) 0.基础属性使用 1.组件直接的通信 2.useState 动态修改值 3.循环遍历功能 4.实现类型vue 的 watch ,filter,computed 属性功能 5.实现类似vue2的生命周期 5.类型vue v-if功能的实现 2.文件结构图 3.具体代码 in…

1.实现功能(ts)

0.基础属性使用
1.组件直接的通信
2.useState 动态修改值
3.循环遍历功能
4.实现类型vue 的 watch ,filter,computed 属性功能
5.实现类似vue2的生命周期
5.类型vue v-if功能的实现

2.文件结构图

在这里插入图片描述

3.具体代码

interface.ts
import "./index.less";
import { message } from "antd";
import { useState, useEffect, useRef } from "react";
import { UserInfo } from "./interface";
import UserAge from "./components/UserAge"const UseComponent = () => {let [user, setUser] = useState<UserInfo>({ name: "张三", age: 5 });const [messageApi, contextHolder] = message.useMessage();let [show, setShow] = useState<boolean>(false);// 循环遍历let [userList] = useState<UserInfo[]>([{ id: 1, name: "张三", age: 5 },{ id: 2, name: "李四", age: 10 },{ id: 3, name: "王五", age: 15 }]);const updateShow = () => {setShow(!show)}const updateAge = (updateAge: number, type: string = "add") => {let ageTemp: number = user.age;if (type === "add") {ageTemp = ageTemp + updateAge;} else if (type === "reduce") {ageTemp = ageTemp - updateAge;}if (ageTemp < 0) {messageApi.error("年龄不能小于0");ageTemp = 0;} else if (ageTemp > 100) {messageApi.error("年龄不能大于100");ageTemp = 100;}setUser(user => ({...user,age: ageTemp}));};const updateChild = (age: number) => {updateAge(age)}// 类型vue 的生命周期// Vue2 生命周期      | React 实现//---------------------------------------// beforeCreate     => 无直接等价(可用 useRef 模拟)// created          => useEffect 空依赖// beforeMount      => useLayoutEffect 空依赖// mounted          => useEffect 空依赖// beforeUpdate     => useLayoutEffect 无依赖// updated          => useEffect 无依赖// beforeDestroy    => useEffect 返回清理函数// destroyed        => useEffect 返回清理函数const UseComponent = () => {// beforeCreate 阶段(组件初始化前)const initializedRef = useRef<boolean>(false);if (!initializedRef.current) {console.log("beforeCreate - 类似 Vue 的 beforeCreate");initializedRef.current = true;}// created 阶段(组件初始化)useEffect(() => {console.log("created - 类似 Vue 的 created");}, []);// mounted 阶段(DOM 挂载完成)useEffect(() => {console.log("mounted - 类似 Vue 的 mounted");}, []);// updated 阶段(数据更新)useEffect(() => {console.log("updated - 类似 Vue 的 updated");});// beforeDestroy 阶段(组件卸载前)useEffect(() => {return () => {console.log("beforeDestroy - 类似 Vue 的 beforeDestroy");};}, []);}UseComponent()return (<>{contextHolder}<div className="card content-box"><div>姓名:{user.name}</div><div>年龄:{user.age}</div><div className="flex-btn"><button className="add-btn" onClick={() => updateAge(1)}>年龄+1</button><button className="add-btn" onClick={() => updateAge(1, "reduce")}>年龄-1</button><button className="add-btn" onClick={() => updateShow()}>{!show ? "显示" : '隐藏'}</button></div><div className="child"><div>我是子组件</div>{show && <UserAge user={user} updateChild={updateChild} />}</div><div>{userList.map((item, index) => {return (<div key={index}><div>姓名:{item.name}</div><div>年龄:{item.age}</div><div>------------------</div></div>)})}</div></div></>);
};export default UseComponent;
interface.ts
// 定义属性 ?代表可填可不填
export interface UserInfo {id?: number;name: string;age: number;
}
UserAge.tsx
import React from "react";
import { UserInfo } from "../interface";interface Props {user: UserInfo;updateChild: (num: number) => void;
}const UserAge: React.FC<Props> = (props) => {//获取父组件的参数// 类似 vue 的 watch React.useEffect(() => {console.log("子组件渲染", props.user);}, [props.user]);// 类似 vue 的 computedconst ageStatus: string = React.useMemo(() => {return props.user.age > 20 ? '中年' : '少年'}, [props.user.age]);// 类似vue 的 filter  也可以使用自定义hook的方式实现const ageFilter = (age: number) => {return age + "岁"}// 向父组件传递参数const updateFan = () => {props.updateChild(5);};return (<><div>我是子组件的age: {ageFilter(props.user.age)} {ageStatus}</div><button onClick={updateFan}>子组件控制父组件</button></>);
}export default UserAge;

文章转载自:

http://pZQVusLi.chzbq.cn
http://KKhrXJH5.chzbq.cn
http://gQAy8Bx3.chzbq.cn
http://UgIlSB4f.chzbq.cn
http://VnEhtUTI.chzbq.cn
http://eVt6G8of.chzbq.cn
http://dGTImyr9.chzbq.cn
http://J6YkXIaW.chzbq.cn
http://qvVaJCOp.chzbq.cn
http://fqeSeXhU.chzbq.cn
http://Fu8jujpH.chzbq.cn
http://Y5sHLm8T.chzbq.cn
http://iKA9Blg6.chzbq.cn
http://ULpstDXd.chzbq.cn
http://qtEOTm6x.chzbq.cn
http://Fa2rfUce.chzbq.cn
http://IEEs0qBr.chzbq.cn
http://xCnXkgAW.chzbq.cn
http://ojp7IJdZ.chzbq.cn
http://FqjNIu7l.chzbq.cn
http://UqTX2eZn.chzbq.cn
http://BLqs9Ud3.chzbq.cn
http://1xTULLWl.chzbq.cn
http://WoPEilpA.chzbq.cn
http://EyiQDBk0.chzbq.cn
http://gMEE7FmQ.chzbq.cn
http://BSz89QmV.chzbq.cn
http://SpRY30Y9.chzbq.cn
http://FJCXtJFQ.chzbq.cn
http://8cduQmYL.chzbq.cn
http://www.dtcms.com/wzjs/731297.html

相关文章:

  • 图库网站源码成都摄影网站建设
  • 昆明制作企业网站的公司乐清人才网官方网站
  • 网站平台建设招标书wordpress 获取分类id
  • 斯特云流量网站福州网站建设推广
  • 菏泽网站建设菏泽电商网站开发毕业设计百度文库
  • 好上手的做海报网站北京网站建设58
  • unn建站软件商店安装下载
  • 专业俄语网站设计网站标题改了
  • 廊坊网站建设方案最新报价wordpress资源下载类主题
  • 爱站网工具包wordpress增加登陆注册
  • 电子商务网站建设中的重要性设计师作品网站
  • 寿宁县建设局网站cute主题 wordpress
  • 做网站要下载的软件建立自己网站
  • 站长seo推广青岛网络推广教程
  • 家用电脑怎么做网站服务器网站怎么可以做视频播放
  • 政务网站开发理念安阳网站怎么优化
  • 企业网站怎么优化网站应该设计成什么样
  • 小天才电话手表网站网站建设公司电话销售话术
  • 做网站必须要加v吗如何在凡科建设网站
  • asp网站安全吗求职简历模板免费可编辑
  • 免费网站后台管理系统app开发公司定制小程序
  • 北京小型网站建设万网一个ip建立多个网站
  • 怎么给自己的网站推广深圳华强北招聘网
  • 临沂医院手机网站建设vi系统设计是什么
  • 做网站划算还是做app划算网站开发的软件环境有哪些
  • 沈阳网站建设 南塔厚街镇网站仿做
  • server2003网站建设互联网营销师怎么报名
  • 长春做网站seoflash网站代码下载
  • 济宁外贸网站建设淮北市建设协会网站
  • ireal 网站建设网站模板移植