React技巧之字符串插值
原文链接:https://bobbyhadz.com/blog/react-string-interpolation
正文从这开始~
总览
在React中,使用模板字面量进行字符串插值,比如说,<div className={text-white ${myClass}}> 。模板字面量以反引号为界限,允许我们使用美元符号和大括号${expression}语法来嵌入变量和表达式。
import './App.css';
export default function App() {
const myClass = 'bg-salmon';
const name = 'James Doe';
const num = 30;
return (
<div>
<div className={`text-white ${myClass}`}>Some content here</div>
<br />
<div className={`text-white ${'hi'.length === 2 ? 'bg-salmon' : ''}`}>
Some content here
</div>
<h2>Hello {name}</h2>
<h2
style={{
padding: `${num + num}px`,
backgroundColor: 'lime',
}}
>
30 + 30 = {num + num}
</h2>
</div>
);
}
下面是示例中的css声明。
.bg-salmon {
background-color: salmon;
}
.text-white {
color: white;
}
模板字面量
我们可以使用模板字面量在字符串中插入变量。需要注意的是,字符串是用反引号````包裹起来的,而不是用单引号。
美元符号和大括号语法允许我们使用占位符来求值。
<div className={`text-white ${myClass}`}>Some content here</div>
<div className={`text-white ${'hi'.length === 2 ? 'bg-salmon' : ''}`}>
Some content here
</div>
我们用大括号把模板字面量包裹起来,标志着一个必须被求值的表达式的开始。
开头和结尾的大括号之间的只是JavaScript代码,所以我们在模板字面量上使用的任何变量或表达式都会被求值。
当你想在JSX代码中渲染变量或表达式时,你必须将代码包裹在大括号内。
<h2>Hello {name}</h2>
JSX之外
您也可以在JSX代码之外使用模板字面量。
const num = 50;
const result = `${num + 50} percent`;
console.log(result); // ️ 100 percent
多行字符串
默认情况下,模板字面量将这些部分连接成一个字符串。你也可以在多行字符串中使用模板字面量来插入变量。
const color1 = 'red';
const color2 = 'blue';
const poem = `roses are ${color1}
violets are ${color2}`;
console.log(poem);
// ️ roses are red
// ️ violets are blue
这是非常有用的,因为与连接字符串不同,我们不必在每一行都添加换行符。
调用函数
你甚至可以在模板字面量里面调用函数。
import './App.css';
export default function App() {
const subtract = (a, b) => {
return a - b;
};
const myClass = 'bg-salmon';
const num = 30;
return (
<div>
<div
style={{fontSize: `${subtract(60, 20)}px`}}
className={`padding-${subtract(100, 80)} text-white ${myClass}`}
>
Some content here
</div>
</div>
);
}
三元运算符
这里有一个示例,是在模板字面量里面使用三元运算符。
const color1 = 'blue';
const color2 = 'red';
const result = `${color1.length > color2.length ? color1 : color2}`;
console.log(result); // ️ blue
三元运算符与if/else语句基本类似。问号前的部分会被求值,如果它返回一个真值,运算符会返回冒号前的值,否则会返回冒号后的值。
import './App.css';
export default function App() {
return (
<div>
<div className={`text-white ${'hi'.length === 2 ? 'bg-salmon' : ''}`}>
Some content here
</div>
</div>
);
}
示例中的三元运算符检查字符串hi的length属性是否等于2,如果等于2,则返回字符串bg-salmon,否则返回空字符串。
逻辑运算
你也可以在模板字面量中使用逻辑或(||)运算以及逻辑与(&&)运算。
const num1 = 0;
const num2 = 100;
const result = `${num1 || num2}`;
console.log(result); // ️ 100
如果逻辑或运算的左侧是一个真值,那么便返回该值,否则返回右侧的值。
下面是在模板字面量中使用逻辑与运算的示例。
const bool = true;
const str = 'hello';
const result = `${bool && str}`;
console.log(result); // ️ hello
如果逻辑与运算的左侧是一个假值,那么便返回该值,否则返回右侧的值。
React技巧之字符串插值的更多相关文章
- angularjs字符串插值($interpolate)
<!DOCTYPE html> <html lang="zh-CN" ng-app="app"> <head> <me ...
- Swift字符串插值
字符串插值是一种全新的构建字符串的方式,可以在其中包含常量.变量.字面量和表达式.您插入的字符串字面量的每一项都被包裹在以反斜线为前缀的圆括号中: let multiplier = let messa ...
- Scala字符串插值
Scala提供了三种字符串插值方式:s,f和raw.1. s字符串插值器简单的说就是解析字符串变量. val name = "Tom" println(s"His nam ...
- [转] Scala 2.10.0 新特性之字符串插值
[From] https://unmi.cc/scala-2-10-0-feature-string-interpolation/ Scala 2.10.0 新特性之字符串插值 2013-01-20 ...
- CoffeeScript里的字符串插值
拼接字符串是我们常干的事情.与其用很多的 "" + "",不如用一下字符串插值,可读性好些. 方法是在字符串中加入#{ 变量.表达式.函数等} getOther ...
- Scala字符串插值 - StringContext
翻译自:STRING INTERPOLATION 简介 自2.10.0版本开始,Scala提供了一种新的机制来根据数据生成字符串:字符串插值.字符串插值允许使用者将变量引用直接插入处理过的字面字符中. ...
- angular,vue,react的基本语法—插值表达式,渲染数据,响应式数据
基本语法: 1.插值表达式: vue:{{}} react:{} angular:{{}} 2.渲染数据 vue js: export default{ data(){ return{ msg:&qu ...
- 【技巧:字符串同构】Avendesora
判断字符串“同构”的技巧 题目大意 给定A,B两个序列,要求B在A中出现的次数以及位置.定义字符变换:把所有相同的字符变为另一种字符:两个字符串相等:当且仅当一个字符串可以在若干次字符变换之后变为另一 ...
- qmake奇淫技巧之字符串宏定义
阅读本文大概需要3.3分钟 我们平时在软件开发过程中需要定义一些宏,以便在代码中调用,这样每次不需要修改代码,只需要修改外部编译命令就可以得到想要的参数,非常方便 比如我们想在软件介绍中显示软件版本, ...
随机推荐
- BUCK电路和BL8033使用记录
我开始时用的是MPS的MP1584EN,这个芯片各方面都挺不错的.有次老大让我画个降压电路,看到用的是MP1584就说国外的芯片太贵,让我用上海贝岭的BL8033.BL8033确实很好用,虽然它没有1 ...
- 在UnityUI中绘制线状统计图2.0
##在之前的基础上添加横纵坐标 上一期在这里:https://www.cnblogs.com/AlphaIcarus/p/16123434.html 先分别创建横纵坐标点的模板,将这两个Text放在G ...
- RecyclerView + SQLite 简易备忘录-----上
先看效果 图一只是做了简单的页面,没有连接数据库,刚写完页面才想起备忘录好像不需要登录------但用SharedPreferences写了个记住密码. 图二是主页面,实现了搜索,添加,删除,修改几个 ...
- 1. charles安装配置与抓包详解
Charles简介Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据.它允许一个开发 ...
- Python GDAL矢量转栅格详解
前言:挺久没有更新博客了,前段时间课程实验中需要用代码将矢量数据转成栅格,常见的点栅格化方法通过计算将点坐标(X,Y)转换到格网坐标(I,J),线栅格化方法主要有DDA算法.Bresenham算法等, ...
- postgreSQL使用sql归一化数据表的某列,以及出现“字段 ‘xxx’ 必须出现在 GROUP BY 子句中或者在聚合函数中”错误的可能原因之一
前言: 归一化(区别于标准化)一般是指,把数据变换到(0,1)之间的小数.主要是为了方便数据处理,或者把有量纲表达式变成无量纲表达式,便于不同单位或量级的指标能够进行比较和加权. 不过还是有很多人使用 ...
- 利用QEMU+GDB搭建Linux内核调试环境
前言 对用户态进程,利用gdb调试代码是很方便的手段.而对于内核态的问题,可以利用crash等工具基于coredump文件进行调试. 其实我们也可以利用一些手段对Linux内核代码进行gdb调试,qe ...
- 【kubernetes 问题排查】使用 kubeadm 部署时遇到的问题
引言 再使用kubeadm部署集群时会多少遇到一些问题,这里做下记录,方便后面查找问题时有方向,同时也为刚要入坑的你指明下方向,让你少走点弯路 问题汇总 The connection to the s ...
- 自学java的困难
在自学的一些基础阶段,倒是没什么太大的问题,但是在想搞一个项目的时候,就显得手足无措了.因为,很多博主讲的的那些,都行需要一定的条件,比如前端框架,数据库的数据等等. 简单一点的SSM框架整合相对简单 ...
- 记一次burp suite文件上传漏洞实验
一·文件上传漏洞概念 文件上传漏洞是指 Web 服务器允许用户在没有充分验证文件名称.类型.内容或大小等内容的情况下将文件上传到其文件系统.未能正确执行这些限制可能意味着 即使是基本的图像上传功能也可 ...