記一下在react中使用braft-editor富文本編輯器踩的坑

【react】、【ts】、【braft-editor】
最近有一個(gè)需要使用富文本的需求,在網(wǎng)上找到了braft-editor,這是一個(gè)文檔比較全面,使用靈活、簡(jiǎn)單的富文本編輯器。具體使用可以參考官方文檔。
braft-editor官網(wǎng):
https://braft.margox.cn/
集成Ant Design上傳組件:
https://braft.margox.cn/demos/antd-upload

自己的筆記,在使用braft-editor遇到的或感覺(jué)可能別人會(huì)遇到的坑,希望能有一點(diǎn)幫助。

1、初始化的時(shí)候最好創(chuàng)建一個(gè)富文本對(duì)象,別用null代替
editorState: BraftEditor.createEditorState('<p></p>'), // 富文本對(duì)象

這里,我之前按照官網(wǎng)寫(xiě)的,用的null,在結(jié)合antd上傳時(shí),遇到了Cannot read property 'getSelection' of null的報(bào)錯(cuò)。


image.png

在結(jié)合源碼debugger之后,發(fā)現(xiàn)傳過(guò)去的editorState對(duì)象是空。

其原因?yàn)椋河捎谥癳ditorState初始化是null,其創(chuàng)建是在文本改變之后,第一次在未創(chuàng)建editorState對(duì)象時(shí),調(diào)用上傳圖片回調(diào),此時(shí),必然也是null,故報(bào)錯(cuò)。

2、braft-editor默認(rèn)會(huì)將圖片轉(zhuǎn)為base64,不想轉(zhuǎn),需要自定義圖片上傳按鈕
extendControls、controls都可以實(shí)現(xiàn)自定義按鈕
上傳可以用antd的upload,braft-editor官網(wǎng)有結(jié)合antd的upload的例子

3、使用官網(wǎng)例子,創(chuàng)建帶antd upload的富文本時(shí),出現(xiàn)的兩個(gè)常見(jiàn)錯(cuò)誤
(1)沒(méi)有braft-utils、braft-finder包
這兩個(gè)包需要自行安裝,官網(wǎng)文檔沒(méi)提。

  npm i braft-utils --save
  npm install braft-finder --save

安裝包后,我們神奇的發(fā)現(xiàn),這倆包還是不能使用


image.png

原因:上面裝的兩個(gè)包是js的包,可以自行去裝ts的包或者通過(guò)配置實(shí)現(xiàn)

react配置:在src下,創(chuàng)建或修改react-app-env.d.ts文件
image.png

在文件中添加:

    declare module 'braft-utils'
    declare module 'braft-finder'

(2)'{ key: string; type: string; component: Element; }[]' is not assignable to type 'ExtendControlType[]'


image.png

【解決方案】ts報(bào)錯(cuò),在定義extendControls處,加一個(gè):any
【修改前】


image.png

【修改后】
image.png

以上就是這次總結(jié)的坑。

ps:官網(wǎng)列子中,新增圖片按鈕使用了Icon組建,這個(gè)在現(xiàn)在項(xiàng)目中是沒(méi)有的,自行換一個(gè)圖標(biāo)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容