React 第七章 条件渲染

2023-11-03

根据条件渲染不同组件,可以实现组件的显示与隐藏。

第一种:在函数内部通过属性props条件的判断,返回不同的组件,进行控制显示隐藏。如果返回null则表示不展示隐藏。

//1,条件渲染
function UserGreeting(props) {
	  return <h1>Welcome back!</h1>;
}
function GuestGreeting(props) {
    return <h1>Please sign up.</h1>;
}
//通过if判断返回不同的组件进行展示渲染
function Greeting(props){
	const isLogin = props.isLoggedIn;
	if(isLogin){
		return <UserGreeting />;
	}else{
		return <GuestGreeting />;
	}
}
ReactDOM.render(<Greeting isLoggedIn={true} />,document.getElementById('root'));

第二种:通过改变内部state进行重新执行render渲染函数,进行控制组件的显示与隐藏,和上面的例子一样都是在函数内部通过变量判断进行控制。

//2,使用组件内状态state
function LoginButton(props){
	console.log(props);
	return (
		<button onClick={props.onClick}>登录</button>
	);
}

function LogOutButton(props){
	console.log(props);
	return (
		<button onClick={props.onClick}>退出</button>
	);
}
//通过更改state以及三目运算符 动态更新页面组件 state以变则会调用render函数
class LoginControl extends React.Component{
	constructor(props){
		super(props);
		this.state={isLoggind:false};
	}
	
	buttonClick = () =>{
		this.setState({
			isLoggind:!this.state.isLoggind
		});
	}
	
	render(){
		const isLoggind = this.state.isLoggind;
		//这里将click函数传递给了按钮组件,在按钮组件内的button onClick事件中进行了触发调用。
		const button = isLoggind ? <LogOutButton onClick={this.buttonClick} /> : <LoginButton onClick={this.buttonClick} />
		
		return(
			<div>
				<Greeting isLoggedIn={isLoggind} />
				{button}
			</div>
		)
	}
}

ReactDOM.render(<LoginControl />,document.getElementById('root'));

第三种:通过在大括号内部使用 &&与运算符 或者三目运算符进行控制组件是否显示与隐藏

//3,在大括号中使用&& 运算符
function SeyHello(props){
	
	return (
		<h1>{props.name && "hello"+props.name }</h1>	
	);
}
function SeyHello2(props){
	
	return (
			<h1>{props.name ? "hello"+props.name :"没人"}</h1>	
	);
}

ReactDOM.render(<SeyHello name="zhang san" />,document.getElementById('root'));

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React 第七章 条件渲染 的相关文章

随机推荐

  • idea热部署静态资源无法及时生效

    飘 Idea 每次修改JS文件都需要重启Idea才能生效解决方法 最近开始使用Idea 有些地方的确比eclipse方便 但是我发现工程每次修改JS或者是JSP页面后 并没有生效 每次修改都需要重启一次Tomcat这样的确不方便 我想Ide
  • 解决Access32位驱动器问题

    Access数据源驱动器是32位的 64位不支持 只要打开32位版本的ODBC管理工具就可以了 下面是我解决方法 打开这个就行了C Windows SysWOW64 odbcad32 exe
  • linux c++编程

    这本阿里P8撰写的算法笔记 再次推荐给大家 身边不少朋友学完这本书最后加入大厂 Github 疯传 史上最强悍 阿里大佬 LeetCode刷题手册 开放下载了 一 前提 以下环境均采用VMWare虚拟机安装CentOS6 6环境下编程 想要
  • 常用的linux命令还只能说出cd、ls?下次面试说出这几个命令提升你的层次吧!

    mpstat 显示各个可用CPU的状态 P 指定CPU编号 mpstat p 5 指定查看编号5CPU的状态 间隔时间 次数 mpstat 2 3 两秒一次合计输出三次 pidstat 显示指定进程CPU 内存 线程 设备IO等资源的占用情
  • 个人记账管理系统(大二第一学期JAVA期末项目)

    项目简介 设置账单条目Account类 定义属性 支出金额expend 收入金额income 时间datestr 账单条目备注remark 账单条目类型type 账单条目流水编号id 设置用户User类 定义用户信息 帐号昵称UserNam
  • C++模版深度解析

    在C 发明阶段 C 之父Stroustrup和贝尔实验室的C 小组对原先的宏方法进行了修订 对其进行了简化并将它从预处理范围移入了编译器 这种新的代码替换装置被称为模板 而且它变现了完全不同的代码重用方法 模板对源代码重用 而不是通过继承和
  • 支持向量机SVM

    文章目录 SVM简单理解 SVM代码实现 导入数据集 SVM实现 画出支持向量 总结 SVM简单理解 在下二维平面存在以下数据点 不同颜色代表不同类别 现在需要画一条直线 想将两个类别分别开来 当有新数据加入时 根据这条直线 也能将新数据正
  • Vue:ElementUI怎么引入外部svg图标

    推荐阿里巴巴图标库 命令行运行npm install svg sprite loader 创建icons svg文件夹 将svg文件放在该文件夹下面 在components文件夹中创建svgiconfont vue文件 文件内容
  • 【啃书】《智能优化算法及其MATLAB实例》例7.2模拟退火算法进行函数寻优

    文章目录 问题描述 仿真过程 matlab源码 问题描述 仿真过程 matlab源码 该脚本要命名为func2 m 适应度函数 function value func2 x y value 5 cos x y x y y y y value
  • postgresql优化案例三:recheck cond

    文章目录 1 SQL语句 2 查看改善前执行计划 3 解决方案 3 1增加work mem的size 3 2 创建合适的索引 4 改善后执行计划 1 SQL语句 delete from sap dispatchingd hist a whe
  • 使用 VBA 自动化 Chrome / Edge

    介绍 Internet Explorer classic 下称IE 是基于ActiveX技术的 对于 Webscraping 或从 VBA 等 OLE 感知编程语言进行测试等任务 自动化 IE 非常容易 但微软将在不久的将来终止对 IE 的
  • C# 定义宏

    define ENABLE TEST 必须在 using 的上方定义 using System Collections using UnityEngine public class TestDefine MonoBehaviour void
  • 通配符*和?的区别

    通配符 和 的区别是 可以用来代替零个 单个或多个字符 而 仅可以使用代替一个字符 表示匹配的数量不受限制 而 的匹配字符数则受到限制
  • 17:UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 0: illegal multibyte sequence

    菜鸟学python习题17运行错误 我的 直接在open里加了一个 errors ignore 即可 第一个人 使用python的时候经常会遇到文本的编码与解码问题 其中很常见的一种解码错误如题目所示 下面介绍该错误的解决方法 将 gbk
  • Rocketmq机制回顾总结

    1 应用场景如解耦 削峰填谷 异步处理 分布式事务中间协调 2 nameserver producer broker consumer 3 brokerName brokerId brokerRole Namesrvaddr常用配置参数 4
  • mysql查询语句group by 语句报错

    高版本的mysql 在查询语句时 有group by 会报错 报错信息如下 gt 1055 Expression 40 of SELECT list is not in GROUP BY clause and contains nonagg
  • [nifi] 数据管理分发工具

    官方文档 Apache NiFi 运行 HOME bin run nifi bat 打开网页 127 0 0 1 nifi 账号密码 HOME logs nifi app log 找到如下字段 开始界面 简单实例 1 本地 gt 本地 2
  • sqlplus,imp 等命令无效解决

    今天我在数据库上准备导入数据 但在输入sqlplus nolog 时报出 sqlplus 不是有效的内部命令 解决方案 在oracle ora92 bin 下找到了 sqlplus imp exp 等命令 点开可以执行 也可以在dos下进入
  • C# 算法系列 - 贪婪算法(背包问题)

    using System namespace ConsoleApp1 class Program static void Main string args 贪婪算法 背包问题 背包问题 Knapsack problem 是一种组合优化的NP
  • React 第七章 条件渲染

    根据条件渲染不同组件 可以实现组件的显示与隐藏 第一种 在函数内部通过属性props条件的判断 返回不同的组件 进行控制显示隐藏 如果返回null则表示不展示隐藏 1 条件渲染 function UserGreeting props ret