React中的条件渲染

2023-11-02

React中的条件渲染

Vue.js中使用v-if/v-else实现模板中的条件渲染;
小程序中使用wx:if/wx:else实现模板中的条件渲染;
React中没有模板(即不需要v-if),也没有指令系统(即没有v-if)。——条件渲染需要手工实现

有四种渲染方式

好了,上代码

方法1:创建判断函数

上面的代码实现为此方法

f1(){
	if(){
		return JSX}else return JSX
	}
}
{this.f1()}
//快捷输入代码块rcc
import React, { Component } from 'react'

export default class App extends Component {
	// 假设数据库返回了“用户的性别”数据,0-表示女 1-表示男
	state={sex:0}
	
	showMsg(){
		if(this.state.sex===0){
			return (
				<p>您好!女士!</p>
			)
		}else{
			return (
				<div>嘿!爷们儿!</div>
			)
		}
	}
	
	render() {
		return (
			<div>
				{/*注释的方式*/}
				{this.showMsg()}
				{/*注意上面的()是必须的*/}
			</div>
		)
	}
}

方法2:创建判断变量

render(){
	let msg; if(){
		msg=JSX
	}
	else msg=JSX
	
	return <div>{msg}<div>
}
import React, { Component } from 'react'

export default class App extends Component {
	// 假设数据库返回了“用户的性别”数据,0-表示女 1-表示男
	state={sex:1}
	
	render() {
		let msg;
		if(this.state.sex===0){
			msg=<p>您好!女士!</p>
		}else{
			msg=<div>嘿!爷们儿!</div>
		}
		
		return (
			<div>
				{msg}
			</div>
		)
	}
}

方法3:三目表达式

<div>{this.state.xx==0 ? JSX : JSX}</div>
import React, { Component } from 'react'

export default class App extends Component {
	// 假设数据库返回了“用户的性别”数据,0-表示女 1-表示男
	state={sex:0}
	
	render() {
		return (
			<div>
				{this.state.sex===0?<p>您好!女士</p>:<div>哈!爷们儿!</div>}
			</div>
		)
	}
}

方法4:逻辑与运算

{this.state.xx==0  && JSX}
{this.state.xx==1 && JSX}
import React, { Component } from 'react'

export default class App extends Component {
	// 假设数据库返回了“用户的性别”数据,0-表示女 1-表示男
	state={sex:1}
	
	render() {
		return (
			<div>
				{this.state.sex===0 && <p>您好!女士!!!</p>}
				{this.state.sex===1 && <div>嘿!爷们儿!!!</div>}
			</div>
		)
	}
}

上方的第四种方法是官网上推荐的方法,我比较喜欢用第三种和第四种方法 ,不过第三种方法看上去会特别的乱 ,第四种方法代码量有点大

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

React中的条件渲染 的相关文章

  • 无法在 JavaScript for 循环中读取 null 的属性“长度”

    我正在尝试制作一个像 Stack Overflow 那样的 Markdown 编辑器 如果我实际上没有在文本区域中键入星号和包含短语的 http 我会收到标题中列出的此错误 如果我只输入包含星号的短语 则错误指的是这一行 if linkif
  • Jasmine-jQuery loadFixtures 未定义

    我对整个茉莉花的事情仍然很陌生 在过去的几个小时里我陷入了这个问题 我尝试使用 loadFixture 加载外部夹具文件 我使用 Jasmine 2 0 0 和 Jasmine jQuery 2 0 5 ReferenceError loa
  • Javascript DOM setAttribute 在函数调用中不起作用

    我有一个带有输入元素的 HTML 文件 我希望向其中添加一个名为 valid fieldset011 的新属性 该属性用作 AngularJS 验证器的链接 输入元素具有属性 id fieldset011 如果我使用以下脚本 包含在脚本标签
  • 第一次使用node.js - “ReferenceError:节点未定义”

    我刚刚安装了node js 我尝试编写应该检查版本的node v 但它不起作用 这是输出 gt node v ReferenceError node is not defined at repl 1 2 at REPLServer self
  • 仅单击 div 内部

    我正在为一个小网站制作教程 我只想让教程气泡可点击 因此 当我们尝试单击气泡之外的某些内容时 什么也不会发生 换句话说 我希望我的 html 不可点击 而 tutorial bubble 可点击 尝试这个 jQuery function h
  • window.onbeforeunload 在 Android Chrome 上不会触发 [alt.解决方案?]

    我开发了一个简单的聊天应用程序 我正在使用 window onbeforeunload当有人关闭选项卡 浏览器时 基本上是当用户离开房间时 通知其他用户 这是我的代码 scope onExit function scope chatstat
  • Jest - 模拟函数,从另一个文件导入

    测试的文件使用从另一个文件导入的函数 import myFunc from myFile 如何在该文件的测试中模拟该函数的返回值 我正在使用笑话 这对我有用 我不确定这是否是一个好的做法 import as myFile from myFi
  • 了解 sort() 比较函数

    我正在使用一个电子商务平台 该平台无法重新排序产品属性字段的选项 这真的很糟糕 因为要插入新选项 您几乎必须删除所有现有选项并重新开始 我正在尝试在客户端进行操作 这是我正在处理的内容 这是针对鞋码的 9 EE 9 1 2 EE 10 EE
  • 如何导入和导出 javascript ES6 类

    我是 javascript 和 nodejs 的新手 我正在使用这个项目来发展我的技能并学习新技术 目前我的项目使用多个相互依赖的类 类文件位于不同的目录中 我当前正在尝试使用 export 和 require 语句来允许在其他文件中引用类
  • 确定元素是在页面折叠上方还是下方

    我有一些页面有多个输入框 用户可以在其中输入文本 在单击 下一步 按钮之前 需要填写其中一些内容 我弹出验证错误供用户查看 但是如果问题不在页面上 我希望页面滚动到它 而不是他们必须搜索丢失 错误的字段 我有一个滚动到位 但我无法确定要滚动
  • 使用 JavaScript 生成 PDF 文件

    我正在尝试将 XML 数据从网页转换为 PDF 文件 并且希望能够完全在 JavaScript 中完成此操作 我需要能够绘制文本 图像和简单的形状 我希望能够完全在浏览器中完成此操作 我刚刚写了一个名为jsPDF https github
  • 如何从 JSON 响应重定向?

    所以我尝试使用 Flask 和 Javascript 上传器 Dropzone 上传文件并在上传完成后重定向 文件上传正常 但在烧瓶中使用传统的重定向 return redirect http somesite com 不执行任何操作 页面
  • 了解 JavaScript - 资源

    使用 StackOverflow 的微型 Digit Blog 功能进行描述here https stackoverflow com about 我想发布以下我刚刚看到的 我觉得很有趣的谷歌技术谈话视频 我一直在理解 javascript
  • console.log() 显示同一对象属性的矛盾值

    我想我可能要疯了 我使用 console log 来查看对象的状态 然后在下一行对同一对象的特定属性执行 console log 并为每个属性获取不同的值 我正在使用的代码是 console log this pictures Items
  • npm install -g expo-cli 失败并显示“EPERM:不允许操作,取消链接 '...\adb.exe'

    我在运行时收到错误 npm install g expo cli 我尝试以管理员身份重新安装节点模块 但出现相同的错误 环境 Windows 10 节点版本 10 15 3 NPM版本 6 9 0 我预计安装会发生 但出现了这样的错误 np
  • ToggleClass 动画 jQuery?

    我的网站上有一个部分 当用户单击时我希望它展开 我正在使用 jQuerytoggleClass为了这 expandable function e e preventDefault this closest article toggleCla
  • JavaScript 测验在提出所有问题之前结束

    我现在正在学习 JavaScript 并且正在创建一个测验 我的测验运行正常 控制台中没有任何错误 但它会跳过问题 有时会在回答所有问题之前结束测验 即使给出正确答案 也会减少时间 我不太确定为什么它会这样做 因为在我看来它的编码是正确的
  • 如何打开弹出窗口并用父窗口中的数据填充它?

    如何使用 JavaScript jQuery 使用父页面中 JS 变量的数据填充弹出窗口 在我的示例中 我有一个文件名数组 我在父窗口中最多列出五个 如果还有更多 我想提供一个链接来打开弹出窗口并列出数组中的每个帖子 因此 如果我打开一个包
  • useParams 钩子在 React 功能组件中返回未定义

    该应用程序显示所有照片
  • mozilla pdf.js 没有全视图

    我喜欢这个 pdf 查看器https github com mozilla pdf js https github com mozilla pdf js Demo http mozilla github com pdf js web vie

随机推荐