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

react与vue的对比,来实现标签内部类似v-for循环,v-if等功能

前言:

        在vue中我们提供了很多标签方法,比如用的比较多的v-for循环内容,v-if/v-show等判断,可以直接写在标签中,大大提高了我们的开发效率,那么在react中有没有类似的方法呢?我们这里来说一说。

react中没有这种方法,但是可以用函数式的编程来完成类似的需求

1、循环元素,v-for的效果 = 我们map+函数实现

可以看到我们实际使用中,可以通过函数的返回值来实现,map循环中我们调用另一个函数,在这个函数里面,返回子级的标签和内容,就完美的实现了一个标签中for循环的效果

const toolbarThemeData = [] //数组// 返回dom元素
return (
<><div className="flex">{ toolbarThemeData.map(item => changeColor(item, setTheme)) }</div> </>
)// 在函数中,可以返回标签,在标签中可以处理数据
function changeColor(item: IThemeData, setTheme: (key: keyof IGlobalTheme, color: string) => void) {return (<div key={item.key} className="w-1/4 flex flex-col items-center"><span className="mb-1">{item.title}</span><ColorPicker defaultValue={item.value} onChange={e => setTheme(item.key, e.toHexString())} /></div>)
}

2、条件判断,类似v-if的效果,可以通过&&和三目运算来实现

&&方法:    {isVisible && <div>我会在 isVisible 为 true 时渲染</div>}

import { useEffect, useState } from "react";
const [isVisible , setIsVisible ] = useState(false)// 类似onload
useEffect(()=>{setTimeout(() => {setIsVisible(true)},1000)},[])return (<div>{isVisible && <div>我会在 isVisible 为 true 时渲染</div>}</div>);

三目运算方法:{isAdmin ? (<AdminPanel />) : (<GuestPanel />)}

后面也可以换成函数,函数返回标签内容就行,跟上面map一样

return (<div>{isAdmin ? (<AdminPanel />) : newPage()}</div>);const newPage = ()=>{return(<div>哈哈哈</div>)
}

3、显示与隐藏的效果,类似v-show的效果,这个得通过动态样式来了

直接在标签上加样式,或者动态改class名

return (<div style={{ display: isVisible ? 'block' : 'none' }}>我会根据 isVisible 显示/隐藏(DOM 始终存在)</div>);
// CSS 文件
.hidden {display: none;
}// 组件
function MyComponent({ isVisible }) {return (<div className={isVisible ? '' : 'hidden'}>我会根据 isVisible 显示/隐藏</div>);
}

http://www.xdnf.cn/news/17642.html

相关文章:

  • 万字详解C++11列表初始化与移动语义
  • 如何把ubuntu 22.04下安装的mysql 8 的 数据目录迁移到另一个磁盘目录
  • 基于深度学习的苹果品质智能检测算法研究
  • Kubernetes(K8S)中,kubectl describe node与kubectl top pod命令显示POD资源的核心区别
  • .net\c#web、小程序、安卓开发之基于asp.net家用汽车销售管理系统的设计与实现
  • Android Activity 的对话框(Dialog)样式
  • LaTeX(排版系统)Texlive(环境)Vscode(编辑器)环境配置与安装
  • PostgreSQL——索引
  • SpringBoot工程妙用:不启动容器也能享受Fat Jar的便利
  • Redis:是什么、能做什么?
  • 第十三节:后期处理:效果增强
  • MySQL优化常用的几个方法
  • 使用 Python Selenium 和 Requests 实现歌曲网站批量下载实战
  • 100、【OS】【Nuttx】【构建】cmake 配置保存
  • 文心4.5专家负载均衡机制深度解析
  • 【Virtual Globe 渲染技术笔记】4 椭球面上的曲线
  • 线上Linux服务器被植入各种病毒的详细分析、处理、加固流程
  • 机器学习之TF-IDF文本关键词提取
  • EP1S20F484C6 Altera Stratix FPGA
  • imx6ull-驱动开发篇19——linux信号量实验
  • 鸿蒙开发资源导航与学习建议
  • 如何解决Unexpected token ‘<’, “<!doctype “… is not valid JSON 报错问题
  • 微服务ETCD服务注册和发现
  • LeetCode 2787.将一个数字表示成幂的和的方案数:经典01背包
  • Airtable 入门指南:从创建项目到基础数据分析与可视化
  • 渗透测试现已成为 CISO 战略的核心
  • 开疆智能Ethernet转ModbusTCP网关连接PAC3200电能表配置案例
  • 企业高性能web服务器(4)
  • 【运维进阶】Ansible 自动化
  • AI重构Java开发:飞算JavaAI如何实现效率与质量的双重突破?