前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >React技巧之字符串插值

React技巧之字符串插值

作者头像
chuckQu
发布2022-08-19 15:50:33
发布2022-08-19 15:50:33
59300
代码可运行
举报
文章被收录于专栏:前端F2E前端F2E
运行总次数:0
代码可运行

原文链接:https://bobbyhadz.com/blog/react-string-interpolation[1]

作者:Borislav Hadzhiev[2]

正文从这开始~

总览

在React中,使用模板字面量进行字符串插值,比如说,<div className={text-white`

代码语言:javascript
代码运行次数:0
运行
复制
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声明。

代码语言:javascript
代码运行次数:0
运行
复制
.bg-salmon {
  background-color: salmon;
}

.text-white {
  color: white;
}

string-interpolation.png

模板字面量

我们可以使用模板字面量在字符串中插入变量。需要注意的是,字符串是用反引号````包裹起来的,而不是用单引号。

美元符号和大括号语法允许我们使用占位符来求值。

代码语言:javascript
代码运行次数:0
运行
复制
<div className={`text-white ${myClass}`}>Some content here</div>

<div className={`text-white ${'hi'.length === 2 ? 'bg-salmon' : ''}`}>
  Some content here
</div>

我们用大括号把模板字面量包裹起来,标志着一个必须被求值的表达式的开始。

开头和结尾的大括号之间的只是JavaScript代码,所以我们在模板字面量上使用的任何变量或表达式都会被求值。

当你想在JSX代码中渲染变量或表达式时,你必须将代码包裹在大括号内。

代码语言:javascript
代码运行次数:0
运行
复制
<h2>Hello {name}</h2>

JSX之外

您也可以在JSX代码之外使用模板字面量。

代码语言:javascript
代码运行次数:0
运行
复制
const num = 50;

const result = `${num + 50} percent`;

console.log(result); // 👉️ 100 percent

多行字符串

默认情况下,模板字面量将这些部分连接成一个字符串。你也可以在多行字符串中使用模板字面量来插入变量。

代码语言:javascript
代码运行次数:0
运行
复制
const color1 = 'red';
const color2 = 'blue';

const poem = `roses are ${color1}
violets are ${color2}`;

console.log(poem);
// 👉️ roses are red
// 👉️ violets are blue

这是非常有用的,因为与连接字符串不同,我们不必在每一行都添加换行符。

调用函数

你甚至可以在模板字面量里面调用函数。

代码语言:javascript
代码运行次数:0
运行
复制
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>
  );
}

三元运算符

这里有一个示例,是在模板字面量里面使用三元运算符。

代码语言:javascript
代码运行次数:0
运行
复制
const color1 = 'blue';
const color2 = 'red';

const result = `${color1.length > color2.length ? color1 : color2}`;

console.log(result); // 👉️ blue

三元运算符与if/else语句基本类似。问号前的部分会被求值,如果它返回一个真值,运算符会返回冒号前的值,否则会返回冒号后的值。

代码语言:javascript
代码运行次数:0
运行
复制
import './App.css';

export default function App() {
  return (
    <div>
      <div className={`text-white ${'hi'.length === 2 ? 'bg-salmon' : ''}`}>
        Some content here
      </div>
    </div>
  );
}

示例中的三元运算符检查字符串hilength属性是否等于2,如果等于2,则返回字符串bg-salmon,否则返回空字符串。

逻辑运算

你也可以在模板字面量中使用逻辑或(||)运算以及逻辑与(&&)运算。

代码语言:javascript
代码运行次数:0
运行
复制
const num1 = 0;
const num2 = 100;

const result = `${num1 || num2}`;
console.log(result); // 👉️ 100

如果逻辑或运算的左侧是一个真值,那么便返回该值,否则返回右侧的值。

下面是在模板字面量中使用逻辑与运算的示例。

代码语言:javascript
代码运行次数:0
运行
复制
const bool = true;
const str = 'hello';

const result = `${bool && str}`;
console.log(result); // 👉️ hello

如果逻辑与运算的左侧是一个假值,那么便返回该值,否则返回右侧的值。

参考资料

[1]

https://bobbyhadz.com/blog/react-string-interpolation: https://bobbyhadz.com/blog/react-string-interpolation

[2]

Borislav Hadzhiev: https://bobbyhadz.com/about

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端F2E 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 总览
  • 模板字面量
    • JSX之外
    • 多行字符串
    • 调用函数
    • 三元运算符
    • 逻辑运算
    • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档