使用 React 为代码块创建打字机效果

使用打字机效果,单词一次显示一个字母,而不是一次显示所有单词,使文本看起来好像是实时书写的。您可以在Codepen 的登录页面上找到代码块打字机效果的示例,该示例使用语法高亮(一种特殊的颜色格式)来轻松地以代码的形式显示书面文本。

在本文中,我们将学习如何使用 React 从头开始构建类似的代码块打字机效果。我们还将演示一种使用预先存在的打字机包的替代方法。要学习本教程,您需要具备 React 的基本知识。我们将介绍以下内容:

  • 安装依赖项

  • 打造打字机效果

    • 打字机展示区

    • 添加闪烁的光标

  • 将打字机效果添加到文本

  • 删除和重新输入文本

  • 高亮代码语法

  • 使用打字库

您可以在此 GitHub 存储库中找到本教程的完整源代码。让我们开始吧!

安装依赖项

如果您还没有安装 React,请在您的系统中导航到您的项目目录,打开一个命令行窗口,然后在其中运行以下 bash 脚本:

npx create-react-app typewriter

上面的命令创建了一个 React 项目文件夹,该文件夹调用typewriter了构建我们的应用程序所需的所有依赖项。为了轻松设计我们的应用程序,我们将使用 Tailwind CSS。您可以通过在 CLI 中运行以下命令来安装 Tailwind CSS:

npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p

安装完成后,修改tailwind.config.js文件以允许支持jsx元素,如下所示:

/** @type {import('tailwindcss').Config} */
module.exports = {
  content: [
    "./src/**/*.{js,jsx,ts,tsx}",
  ],
  theme: {
    extend: {},
  },
  plugins: [],
}

最后,将以下 Tailwind CSS 指令添加到 的顶层index.css:

@tailwind base;
@tailwind components;
@tailwind utilities;

打造打字机效果

我们的打字机效果将由两个主要部分组成,一个用于保存我们想要动画的文本的容器和一个用于模仿打字机的闪烁光标。

打字机展示区

首先,在我们的 App.js文件中,我们将构建打字机效果的显示窗口:

import "./App.css";
import {React, useState, useEffect} from "react";
​
function App() {
  const [text1, setT
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
React 中,可以使用第三方库 React Markdown,它可以将 Markdown 格式的文本转换成 HTML 格式,并且支持代码块的渲染。 首先,需要安装 React Markdown: ```bash npm install react-markdown ``` 然后,可以在组件中引入 React Markdown,例如: ```jsx import ReactMarkdown from 'react-markdown'; function MyComponent() { const markdownText = ` # Hello, world! Here is a code block: \`\`\`javascript const greeting = "Hello, world!"; console.log(greeting); \`\`\` `; return ( <div> <ReactMarkdown source={markdownText} /> </div> ); } ``` 在上面的例子中,我们将 Markdown 格式的文本作为 `source` 属性传递给 `ReactMarkdown` 组件,并且在文本中使用三个反引号来标记代码块React Markdown 会自动识别代码块,并将其渲染成 `<pre>` 和 `<code>` 标签。 你还可以通过 `renderers` 属性来自定义代码块的渲染方式,例如: ```jsx import ReactMarkdown from 'react-markdown'; function MyComponent() { const markdownText = ` # Hello, world! Here is a code block: \`\`\`javascript const greeting = "Hello, world!"; console.log(greeting); \`\`\` `; const CodeBlock = ({ language, value }) => { return ( <pre> <code className={`language-${language}`}>{value}</code> </pre> ); }; return ( <div> <ReactMarkdown source={markdownText} renderers={{ code: CodeBlock }} /> </div> ); } ``` 在上面的例子中,我们定义了一个名为 `CodeBlock` 的组件来自定义代码块的渲染方式,并将其作为 `renderers` 属性的值传递给 `ReactMarkdown` 组件。在 `CodeBlock` 组件中,我们使用 `prismjs` 库来高亮代码块,并且根据代码块的语言来添加对应的类名。 希望这能帮助到你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pxr007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值