React富文本編輯器開發(一)

在這里插入圖片描述
這是一個系統的完整的教程,每一節文章的內容都很重要。這個教程學完后自己可以開發出一個相當完美的富文本編輯器了。下面就開始我們今天的內容:

安裝

是的,我們的開發是基于Slate的開發基礎,所以要安裝它:

yarn add slate slate-react

這樣就可以了。 使用的時候像下面這樣引入相關的依賴:

import React, { useState } from 'react'
import { createEditor } from 'slate'
import { Slate, Editable, withReact } from 'slate-react'

當然,slate的功能很多,按需引用即可。

開始

我們先來創建一個組件,用以我們的開始

SDocer.jsx

...
function SDocer(){_return null;
}

這個組件就做為我們學習開發富文本編輯器的開始。接下來我們要創建一個Editor對象,我們需要它的狀態與渲染之間保持穩定,所有我們用useState來作為橋接工具。

import { useState } from 'react'
import { createEditor } from 'slate'
import { withReact } from 'slate-react'function SDocer(){const [editor] = useState(() => withReact(createEditor()))return null;
}export default SDocer

現在什么都沒有,我們沒有渲染任何東西。這個時候我們需要一個上下文對象,把相關的插件功能附上去。這個上下文就是Slate, 先定義一個初始值,

import { useState } from 'react'
import { createEditor } from 'slate'
import { Slate, withReact } from 'slate-react'const initialValue = [{type: 'paragraph',children: [{ text: '這是一行段落文字,內容很少,但很重要!!' }],},
];function SDocer(){const [editor] = useState(() => withReact(createEditor()))return <Slate editor={editor} initialValue={initialValue} />
}export default SDocer

我們可以把這個<Slate/>組件當作一個環境對象,所有富文本的相關功能都必須在這個對象中執行才能起作用。也就是所謂的上下文, 雖然呈現的內容可以很復雜,但它的內部數據格式卻是很簡單的,就是一個 Json數組格式,這就小巧很多了,方便傳輸與保存。

到目前為止雖然我們有了上下文,但沒有顯示 /編輯它的主體,所以還是什么也沒有。添加一個<Editable/>主體:

import { useState } from 'react'
import { createEditor } from 'slate'
import { Slate, withReact, Editable } from 'slate-react'const initialValue = [{type: 'paragraph',children: [{ text: '這是一行段落文字,內容很少,但很重要!!' }],},
];function SDocer() {const [editor] = useState(() => withReact(createEditor()))return (<Slate editor={editor} initialValue={initialValue}><Editable /></Slate>)
}export default SDocer

注意,每一步的引入內容都有變化。為了養成良好的開發習慣,我們一定要從一開始就要把數據規劃好。添加一個configure,把相關的初始化信息及配置信息放在里面。

_configure.jsx

export const initialValue = [{type: 'paragraph',children: [{ text: '這是一行段落文字,內容很少,但很重要!!' }],},
];

修改 SDocer.jsx如下,引入 initialValue

SDocer.jsx

import { useState } from 'react';
import { createEditor } from 'slate';
import { Slate, withReact, Editable } from 'slate-react';import { initialValue } from './_configure';function SDocer() {const [editor] = useState(() => withReact(createEditor()));return (<Slate editor={editor} initialValue={initialValue}><Editable /></Slate>)
}export default SDocer;

這樣一個基本的富文本編輯器就完成了。但這只是萬里長征的第一步。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/714457.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/714457.shtml
英文地址,請注明出處:http://en.pswp.cn/news/714457.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【貪心算法】Leetcode 122. 買賣股票的最佳時機 II

【貪心算法】Leetcode 122. 買賣股票的最佳時機 II 122. 買賣股票的最佳時機 II貪心算法&#xff1a;整體利潤拆為每天的利潤&#xff0c;只收集每天的正利潤 122. 買賣股票的最佳時機 II ---------------&#x1f388;&#x1f388;122. 買賣股票的最佳時機 II 題目鏈接&…

【Excel PDF 系列】EasyExcel + iText 庫實現 Excel 轉換 PDF

你知道的越多&#xff0c;你不知道的越多 點贊再看&#xff0c;養成習慣 如果您有疑問或者見解&#xff0c;歡迎指教&#xff1a; 企鵝&#xff1a;869192208 文章目錄 前言轉換前后效果引入 pom 配置代碼實現定義 ExcelDataVo 對象主方法EasyExcel 監聽器 前言 最近遇到生成 …

圖論 - 最小生成樹(Prime、Kruskal)

文章目錄 前言Part 1&#xff1a;Prim算法求最小生成樹1.題目描述輸入格式輸出格式數據范圍輸入樣例輸出樣例 2.算法 Part 2&#xff1a;Kruskal算法求最小生成樹1.題目描述輸入格式輸出格式數據范圍輸入樣例輸出樣例 2.算法 前言 本篇博客介紹兩種求最小生成樹的方法&#xff…

遼寧博學優晨教育視頻:引領安全可靠的學習新風尚

在數字化時代&#xff0c;隨著信息技術的飛速發展&#xff0c;線上教育已成為越來越多人提升自我、拓寬視野的重要選擇。遼寧博學優晨教育視頻憑借其安全可靠的特質&#xff0c;在眾多在線教育平臺中脫穎而出&#xff0c;成為廣大學子信賴的學習伙伴。 一、遼寧博學優晨教育視頻…

MagiskHideProps 使用 props 開啟 android 手機的 ro.debuggable =1 的方法

因為 CDSN 一直不給對舊的文章&#xff08;特別是邊幅比較長的文章&#xff09;一直都無法修改&#xff0c;保存&#xff0c;重新發布 一直都是操作超時 我這里是補全 這邊文章中 unity shader - 圣斗士星矢 人物 shader 還原 - GPA 抓幀提取資源、shader&#xff0c;ROOT權…

python 使用curl_cffi 繞過jax3指紋-Cloudflare 5s盾

現在越來越多的網站已經能夠通過JA3或者其他指紋信息&#xff0c;來識別你是不是爬蟲了。傳統的方式比如換UA&#xff0c;加代理是沒有任何意義了&#xff0c;所以這個時候我們就需要使用到curl_cffi 了。 1.TLS 指紋是啥&#xff1f; 在絕大多數的網站都已經使用了 HTTPS&am…

構造pop鏈

反序列化視頻筆記 第一步&#xff1a;找到目標觸發echo調用$flag 第二步&#xff1a;觸發_invoke函數調用appeng函數$varflag.php&#xff08;把對象當成函數&#xff09; 第三步&#xff1a;給$p賦值為對象&#xff0c;即function成為對象Modifier卻被當成函數調用&#xff…

加密與安全_探索口令加密算法(PBE)

文章目錄 概述疑問PBE 算法 &#xff08; Password Based Encryption&#xff09;CodePOM實現 小結 概述 加密與安全_探索對稱加密算法中我們提到AES加密密鑰長度是固定的128/192/256位&#xff0c;而不是我們用WinZip/WinRAR那樣&#xff0c;隨便輸入幾位都可以。 這是因為對…

2024最新算法:斑翠鳥優化算法(Pied Kingfisher Optimizer ,PKO)求解23個基準函數

一、斑翠鳥優化算法 斑翠鳥優化算法&#xff08;Pied Kingfisher Optimizer ,PKO&#xff09;&#xff0c;是由Abdelazim Hussien于2024年提出的一種基于群體的新型元啟發式算法&#xff0c;它從自然界中觀察到的斑翠鳥獨特的狩獵行為和共生關系中汲取靈感。PKO 算法圍繞三個不…

【Ubuntu操作系統】講解

Ubuntu操作系統 1. 前言2. 系統更新3. 安裝編譯工具4. 安裝文本編輯器4.1 Vim4.2 Visual Studio Code 5. 安裝開發庫6. 安裝版本控制系統6.1 Git 7. 安裝數據庫7.1 MySQL7.2 PostgreSQL 8. 安裝編程語言環境8.1 Python8.2 Node.js 9. 安裝其他常用軟件9.1 Chrome瀏覽器9.2 Dock…

MySQL數據庫引擎,以及常用引擎的區別

先看圖&#xff1a; mysql常用引擎包括&#xff1a;MYISAM、Innodb、Memory、MERGE MYISAM&#xff1a; 全表鎖&#xff0c;擁有較高的執行速度&#xff0c;不支持事務&#xff0c;不支持外鍵&#xff0c;并發性能差&#xff0c;占用空間相對較小&#xff0c;對事務完整性沒有…

SpringBoot整合rabbitmq-主題交換機隊列(四)

說明&#xff1a;Topic主題交換機它的大致流程是交換機和一個或者多個隊列綁定&#xff0c;這個綁定的Routingkey是包含通配符的&#xff0c;滿足通配符的隊列會接收到消息。 通配符規則&#xff1a; #&#xff1a;匹配一個或多個詞 *&#xff1a;匹配一個詞 例如&#xff…

2024洗地機深度測評推薦,洗地機哪款值得入手?新手入門必看洗地機選購技巧

洗地機是近年來備受矚目的智能家居產品&#xff0c;它能夠有效地幫助我們節省勞動時間&#xff0c;高效清潔地面&#xff0c;從而減輕我們的勞動負擔。洗地機實現了掃地和拖地的一體化功能&#xff0c;在掃地的同時還能順便完成地面的拖洗工作。配備水箱的設計使得不再需要頻繁…

【kubernetes VPA】記錄一次安裝 VPA 相關組件的報錯解決過程

文章目錄 1. 問題描述2. 問題原因3. 解決辦法4. 參考鏈接 1. 問題描述 在執行 ./hack/vpa-up.sh腳本命令時&#xff0c;提示有報錯。名為vpa-admission-controller的容器狀態一直停留在ContainerCreating&#xff0c;從該Pod詳細描述中得知&#xff0c;volume "tls-certs…

內核參數調優

默認的Linux內核參數考慮的是最通用場景&#xff0c;不符合用于支持高并發訪問的Web服務器的定義&#xff0c;根據業務特點來進行調整&#xff0c;當Nginx作為靜態web內容服務器、反向代理或者提供壓縮服務器的服務器時&#xff0c;內核參數的調整都是不同的&#xff0c;此處針…

【牛客】SQL131 作答試卷得分大于過80的人的用戶等級分布

描述 現有用戶信息表user_info&#xff08;uid用戶ID&#xff0c;nick_name昵稱, achievement成就值, level等級, job職業方向, register_time注冊時間&#xff09;&#xff1a; iduidnick_nameachievementleveljobregister_time11001牛客1號31007算法2020-01-01 10:00:00210…

常見外設學習以及無線通信頻率

常見外設 UART UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff0c;通用異步收發器&#xff09;是一種異步、串行、全雙工的通信總線。 UART 有3根線&#xff0c;分別是&#xff1a;發送線&#xff08;TX&#xff09;、接收線&#xff08;RX&#xff…

AT24C1024的模擬IIC驅動

AT24C1024是基于IIC的EEPROM&#xff0c;容量為1024/8128k bytes。它的引腳如下&#xff1a; 其中A1,A2為硬件地址引腳 WP為寫保護引腳&#xff0c;一般我們需要讀寫&#xff0c;需要接低電平GND&#xff0c;接高的話則僅允許讀 SDA和SCL則為IIC通信引腳 芯片通信采用IIC&…

02、MongoDB -- MongoDB 的安全配置(創建用戶、設置用戶權限、啟動安全控制、操作數據庫命令演示、mongodb 的幫助系統介紹)

目錄 MongoDB 的安全配置演示前準備&#xff1a;啟動 mongodb 服務器 和 客戶端 &#xff1a;1、啟動單機模式的 mongodb 服務器2、啟動 mongodb 的客戶端 MongoDB 的安全配置啟動演示用到的 mongodb 服務器 和 客戶端啟動單機模式的 mongodb 服務器&#xff1a;啟動 mongodb 的…

【數據結構】19 平衡二叉樹

定義 平衡二叉樹又稱為AVL樹&#xff0c;是具有以下性質的非空搜索樹&#xff1a; 任一結點的左、右子樹均為AVL樹。根節點的左、右子樹高度差的絕對值不超過1. 對于二叉樹的任一結點T&#xff0c;其平衡因子&#xff08;BF&#xff09;定義為BF(T) h L ? h R h_L- h_R hL…