摘要:總結最后介紹一下整個頁面的功能可以對每個字段進行編輯可以對列表字段隨意添加移動刪除可以直接使用的語法來插入鏈接可以上傳本地頭圖可以保存為三種格式在線預覽地址戳我倉庫戳我,歡迎
在線預覽地址:戳我
GitHub倉庫: 戳我,歡迎star
介紹技術棧為純React。接下來介紹一些稍微重要的技術點:
contentEditable核心的編輯功能用到了HTML5的 contentEditable 屬性,但是在 react 中,你不能直接寫下面的這種組件
hello world
這會被 react 提示警告:
試想,平時的 react 組件的 children 都是我們寫好內容并控制更新,而不是交給用戶去隨意更改。就算是可以隨意更改的 組件,它的初始值也是一個 html 的 attribute 而不是 dom 的屬性。
回到 contentEditable,一個帶 contentEditable 的組件被更改后,其 children 的內容實際上并沒有隨著 dom 的更改而更新,這有點類似非受控組件,但是非受控組件 并不帶 children,剛才說到的,用一個 html attribute 來初始值,并通過 onChange 來獲取 value 的更新。
然后我在 npm 上隨便翻了下,果然有可以直接用的 contentEditable 組件,看了下源碼,核心思想就是:
寫一個普通的元素,比如 span,賦予 contentEditable 屬性,不帶 children ,然后用 dangerouslySetInnerHTML 來初始化,通過 onInput 來監聽每次修改,通過 ref 來獲取 innerHTML 就可以將編輯后的內容傳遞給 props 中的 onChange,沒有了 children 的冗余,組件只是在維護一份 innerHTML。這就解決了普通的 contentEditable 的兩大痛點:1. 非受控 2. 狀態冗余。
這里我沒有直接使用 npm 上現成的組件庫,因為需要比較多的鉤子函數和自定義的功能,所以按照這個思路定制了一個具有 contentEditable 屬性的組件。
List還有一個問題是 List,需求是這樣:右鍵單擊 List 中任意一個 item 會彈出菜單,可以調整 List 中 items 的順序,如圖:
通過維護一個類似 key 的 index prop 來標注所有 item 的順序,item 根據初始化的順序有一個從 1 開始的 index prop,在 List 的 state 中維護一個數組來記錄所有 item 的順序,插入 / 移動 / 刪除對應的 item 時更新數組,render 函數再根據數組 中標記的順序來渲染,每次只渲染移動的 item。
總結最后介紹一下整個頁面的功能:
可以對每個字段進行編輯
可以對列表字段隨意添加移動刪除
可以直接使用 markdown 的 []() 語法來插入鏈接
可以上傳本地頭圖
可以保存為 PNG, PDF, HTML 三種格式
在線預覽地址:戳我
GitHub倉庫: 戳我,歡迎star
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/93389.html
摘要:也是一款優秀的響應式框架站點所使用的一套框架為微信服務量身設計的一套框架一組很小的,響應式的組件,你可以在網頁的項目上到處使用一個可定制的文件,使瀏覽器呈現的所有元素,更一致和符合現代標準。 GitHub 值得收藏的前端項目 整理與收集的一些比較優秀github項目,方便自己閱讀,順便分享出來,大家一起學習,本篇文章會持續更新,版權歸原作者所有。歡迎github star與fork 預...
摘要:接下來,亮出自己做的簡歷。登錄進入后,就可以選擇一個你喜歡的簡歷模板進行制作簡歷了。將頁面左邊的工具欄拿掉,然后將簡歷寬度放大到接近瀏覽器寬度即可達到像素最高的效果。此外,會自動保存你做的簡歷,方便下次編輯。 以下文章摘自我的博客,原文鏈接 下面的簡歷圖片不上傳了,想看的點擊原文鏈接就能看到了。 簡述下原理:首先找一個可以在線制作簡歷并提供簡歷模板的網站,然后在模板上填好自己的信息,并...
摘要:例如第二步在根目錄下也就是中添加一個文件夾,文件夾名稱為第一步中二級域名的前綴,也就是然后將你的項目或者其他項目添加入該文件夾中。 項目初始 在一個陽光明媚的下午,學院就業指導老師讓我們每個人做一份簡歷,然后打印上交。后回到宿舍,苦苦在網上尋找,未果。因為不要錢的模板太丑,好看的模板得花錢...,像我等窮逼,哪里有什么閑錢。于是,果斷下載了個丑不拉幾的模板,打開word隨便填了填交了上...
摘要:最小的示例如下它會顯示一個的標題在頁面上。指南的指南在這個指南中,我們將會檢驗的建筑模塊和元素和組件。這是循序漸進的指南關于原則的第一章。它可能會花半小時到一個小時,但是好處是你不會感覺同時在學習和。注意此指南偶爾在示例中采用新的語法。 Hello World 最小的 React 示例如下: ReactDOM.render( Hello, world!, documen...
閱讀 2204·2021-10-13 09:39
閱讀 3408·2021-09-30 09:52
閱讀 800·2021-09-26 09:55
閱讀 2774·2019-08-30 13:19
閱讀 1888·2019-08-26 10:42
閱讀 3184·2019-08-26 10:17
閱讀 543·2019-08-23 14:52
閱讀 3631·2019-08-23 14:39