首页
/ use-editable 项目教程

use-editable 项目教程

2024-08-16 17:23:30作者:何将鹤

项目介绍

use-editable 是一个小型的 React 钩子,它使得元素可以被设置为 contenteditable,同时仍然能够完全渲染。这非常适合创建小型代码编辑器或散文文本区域,大小仅为 2kB。它的目标是允许任何元素可编辑,同时仍然能够渲染正常的 React 元素,无需使用 innerHTML 或从头开始创建完整的编辑器项目。

项目快速启动

首先,安装 use-editable 以及 react

yarn add use-editable
# 或者使用 npm
npm install --save use-editable

然后,你可以导入 useEditable 并传递一个 HTMLElement 引用和一个 onChange 处理程序:

import React, { useState, useRef } from 'react';
import { useEditable } from 'use-editable';

const RainbowCode = () => {
  const [code, setCode] = useState('function test() {}\nconsole.log("hello") ');
  const editorRef = useRef(null);
  useEditable(editorRef, setCode);

  return (
    <div className="App">
      <pre style={{ whiteSpace: 'pre-wrap', fontFamily: 'monospace' }} ref={editorRef}>
        {code.split(/\r\n|\n/).map((content, i, arr) => (
          <React.Fragment key={i}>
            <span style={{ color: `hsl(${((i % 20) * 17) | 0}, 80%, 50%)` }}>
              {content}
            </span>
            {i < arr.length - 1 ? '\n' : null}
          </React.Fragment>
        ))}
      </pre>
    </div>
  );
};

export default RainbowCode;

应用案例和最佳实践

use-editable 可以用于创建各种可编辑的内容表面,如代码编辑器、富文本编辑器等。一个典型的应用案例是创建一个具有语法高亮功能的代码编辑器。通过结合 prism-react-renderer,可以实现代码的高亮显示。

典型生态项目

use-editable 可以与其他 React 生态项目结合使用,例如 prism-react-renderer 用于语法高亮,react-codemirror 用于更复杂的代码编辑需求。这些工具可以大大增强 use-editable 的功能,使其适用于更广泛的场景。

登录后查看全文
热门项目推荐

热门内容推荐

最新内容推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
178
263
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
868
514
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
130
183
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
288
323
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
398
373
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
83
4
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
600
58
GitNextGitNext
基于可以运行在OpenHarmony的git,提供git客户端操作能力
ArkTS
10
3