国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

React markdown 編輯器

這篇具有很好參考價(jià)值的文章主要介紹了React markdown 編輯器。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

react-markdown 是一款 github 上開源的適用于 reactmarkdown 組件,可以基本實(shí)現(xiàn) markdown 的功能,且可以根據(jù)自己實(shí)際應(yīng)用定制的 remark 組件。

安裝

安裝 markdown 預(yù)覽插件 react-markdown

npm install react-markdown

或者:

yarn add react-markdown

安裝 markdown 編輯器插件 for-editor

yarn add for-editor

或者:

npm install for-editor

安裝代碼高亮插件包 react-syntax-highlighter

npm install react-syntax-highlighter

或者:

yarn add react-syntax-highlighter

安裝 remark-math

npm install remark-math

或者:

yarn add remark-math

安裝 rehype-katex

npm install rehype-katex

或者:

yarn add rehype-katex

安裝 rehype-raw

npm install rehype-raw

或者:

yarn add rehype-raw

組件依賴

組件涉及的依賴及版本 package.json

{
  "dependencies": {
    "antd": "^4.16.10",
    "less": "^4.1.1",
    "less-loader": "4.0.1",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-router-dom": "^5.2.0",
    "for-editor": "^0.3.5", // Markdown編輯
    "react-markdown": "^8.0.7", // Markdown預(yù)覽
    "rehype-katex": "^6.0.2", // 數(shù)學(xué)公式katex語法
    "rehype-raw": "^6.1.1", // 支持HTML語法解析
    "remark-math": "^5.1.1", // 支持?jǐn)?shù)學(xué)公式 
    "react-scripts": "4.0.3",
    "typescript": "^5.0.4",
  }
}
  • for-editormarkdown 編輯器
  • react-markdownmarkdown 內(nèi)容預(yù)覽及展示
  • rehype-raw:解析 HTML 文本富文本內(nèi)容
  • remark-math、rehype-katex:數(shù)學(xué)公式支持及語法解析使用(數(shù)學(xué)公式的樣式展示需要 katex.min.css 文件支持)

基本使用

編輯器 for-editor

屬性

名稱 類型 默認(rèn)值 描述
value String - 輸入框內(nèi)容
placeholder String 開始編輯… 占位文本
lineNum Boolean true 是否顯示行號
style Object - 編輯器樣式
height String 600px 編輯器高度
preview Boolean false 預(yù)覽模式
expand Boolean false 全屏模式
subfield Boolean false 雙欄模式(預(yù)覽模式激活下有效)
language String zh-CN 語言(支持 zh-CN:中文簡體, en:英文)
toolbar Object 如下 自定義工具欄
/*
  默認(rèn)工具欄按鈕全部開啟, 傳入自定義對象
  例如: {
    h1: true, // h1
    code: true, // 代碼塊
    preview: true, // 預(yù)覽
  }
  此時(shí), 僅僅顯示此三個(gè)功能鍵
  注:傳入空對象則不顯示工具欄
 */

toolbar: {
  h1: true, // h1
  h2: true, // h2
  h3: true, // h3
  h4: true, // h4
  img: true, // 圖片
  link: true, // 鏈接
  code: true, // 代碼塊
  preview: true, // 預(yù)覽
  expand: true, // 全屏
  /* v0.0.9 */
  undo: true, // 撤銷
  redo: true, // 重做
  save: true, // 保存
  /* v0.2.3 */
  subfield: true, // 單雙欄模式
}

事件

名稱 參數(shù) 類型 默認(rèn)值 描述
onChange String: value function(e) - 內(nèi)容改變時(shí)回調(diào)
onSave String: value function(e) - 保存時(shí)回調(diào)
addImg File: file function(e) - 添加圖片時(shí)回調(diào)

快捷鍵

名稱 描述
tab 兩個(gè)空格縮進(jìn)
ctrl+s 保存
ctrl+z 上一步
ctrl+y 下一步

views/md-editor/ 文件夾下面新建 MdEditor.js 文件:

import React, { useState } from "react"
import MdEditor from 'for-editor'

const DemoEditor = () => {
  /** 默認(rèn)工具欄按鈕全部開啟, 傳入自定義對象
  例如: {
    h1: true, // h1
    code: true, // 代碼塊
    preview: true, // 預(yù)覽
  }
  此時(shí), 工具欄只顯示此三個(gè)功能鍵(注:傳入空對象則不顯示工具欄)
  */
  // 工具欄菜單
  const toolbar = {
    h1: true, // h1
    h2: true, // h2
    h3: true, // h3
    h4: true, // h4
    img: true, // 圖片
    link: true, // 鏈接
    code: true, // 代碼塊
    preview: true, // 預(yù)覽
    expand: true, // 全屏
    /* v0.0.9 */
    undo: true, // 撤銷
    redo: true, // 重做
    save: true, // 保存
    /* v0.2.3 */
    subfield: true, // 單雙欄模式
  };

  // 保存Markdown文本內(nèi)容
  const [mdContent, setMdContent] = useState('')

  // 上傳圖片
  function uploadImg (file) {
    console.log('file', file);
  };
  // 輸入內(nèi)容改變
  function handleEditorChange (value) {
    console.log('handleChange', value);
    setMdContent(value)
  }
  // 保存輸入內(nèi)容
  function handleEditorSave (value) {
    console.log('handleEditorSave', value);
  }
  return (
    <MdEditor placeholder="請輸入Markdown文本" height={600} lineNum={false}
      toolbar={toolbar} value={mdContent} onChange={handleEditorChange} onSave={handleEditorSave} addImg={uploadImg} />
  )
}
export default DemoEditor

App.js 中引入 md-editor.js 文件:

import './assets/css/App.css';
import MdCtxEditor from './views/md-editor/MdEditor';

function App () {
  return (
    <div className="App">
      <MdCtxEditor />
    </div>
  );
}
export default App;

頁面效果:
react-markdown,# React,react.js,編輯器,javascript

預(yù)覽 react-markdown

views/md-editor/ 文件夾下面新建 MdPreview.js 文件:

import React, { useEffect, useState } from "react"
import ReactMarkdown from 'react-markdown'

const DemoPage = () => {
  const [docmentContent, setDocmentContent] = useState('')
  const content = '# This is title 1\n\n## This is title 2\n\n### This is title 3\n\nAnd this is a paragraph\n\n**A paragraph with strong importance**\n\n*A block quote with ~strikethrough~*'
  useEffect(() => {
    setDocmentContent(content)
  }, [])
  return (
    <div className="markdown-body" style={{ padding: '30px', borderRadius: '10px' }}>
      <ReactMarkdown children={docmentContent} />
    </div>
  )
}
export default DemoPage

App.js 中引入 MdPreview.js 文件:

import './assets/css/App.css';
import MdCtxPreview from './views/md-editor/MdPreview';

function App () {
  return (
    <div className="App">
      <MdCtxPreview />
    </div>
  );
}
export default App;

頁面效果:
react-markdown,# React,react.js,編輯器,javascript

代碼塊高亮

修改 MdPreview.js 文件:

import React, { useEffect, useState } from "react"
import ReactMarkdown from 'react-markdown'

import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter'
// 設(shè)置高亮樣式
import { xonokai } from 'react-syntax-highlighter/dist/esm/styles/prism'

const Code = {
  code ({ node, inline, className, children, ...props }) {
    const match = /language-(\w+)/.exec(className || '')
    return !inline && match ? (
      <SyntaxHighlighter
        children={String(children).replace(/\n$/, '')}
        style={xonokai}
        language={match[1]}
        PreTag="div"
        {...props}
      />
    ) : (
      <code className={className} {...props}>
        {children}
      </code>
    )
  }
}
const DemoPage = () => {
  const [docmentContent, setDocmentContent] = useState('')
  const content = `This is some JavaScript code:
  ~~~js
  console.log('Hello world!')
  ~~~
  `
  useEffect(() => {
    setDocmentContent(content)
  }, [])
  return (
    <div className="markdown-body" style={{ padding: '30px', borderRadius: '10px' }}>
      <ReactMarkdown
        children={docmentContent}
        components={Code}
      />
    </div>
  )
}
export default DemoPage

頁面效果:
react-markdown,# React,react.js,編輯器,javascript

支持 HTML

修改 MdPreview.js 文件:

import React, { useEffect, useState } from "react"
import ReactMarkdown from 'react-markdown'

import rehypeRaw from 'rehype-raw';

const DemoPage = () => {
  const [docmentContent, setDocmentContent] = useState('')
  
  const content = `<div class="note">Some *emphasis* and <strong>strong</strong>!</div>`
  
  useEffect(() => {
    setDocmentContent(content)
  }, [])
  return (
    <div className="markdown-body" style={{ padding: '30px', borderRadius: '10px' }}>
      <ReactMarkdown children={docmentContent}
        rehypePlugins={[rehypeRaw]} />
    </div>
  )
}
export default DemoPage

頁面效果:
react-markdown,# React,react.js,編輯器,javascript

rehype-katex 和 remark-math 展示數(shù)學(xué)公式

使用 rehype-katexremark-math 可以輕松的翻譯輸入的數(shù)學(xué)公式。

注意:需要使用 katex.css 來展示相應(yīng)的效果,否則會(huì)出現(xiàn)公式亂掉的 BUG。

index.html 中引入公式解析樣式文件:

<!-- 解析Markdown數(shù)學(xué)公式樣式 -->
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.13.13/dist/katex.min.css" integrity="sha384-RZU/ijkSsFbcmivfdRBQDtwuwVqK7GMOw6IMvKyeWL2K5UAlyp6WonmB8m7Jd0Hn" crossorigin="anonymous">

修改 MdPreview.js 文件:

import React, { useEffect, useState } from "react"
import ReactMarkdown from 'react-markdown'

import remarkMath from 'remark-math'
import rehypeKatex from 'rehype-katex'

const DemoPage = () => {
  const [docmentContent, setDocmentContent] = useState('')
  const ctx = `$$
  I = \int_0^{2\pi} \sin(x)\,dx
  $$`
  useEffect(() => {
    setDocmentContent(ctx)
  }, [])
  return (
    <div className="markdown-body" style={{ padding: '30px', borderRadius: '10px' }}>
      <ReactMarkdown
        children={docmentContent}
        remarkPlugins={[remarkMath]}
        rehypePlugins={[rehypeKatex]}
      />
    </div>
  )
}
export default DemoPage

頁面效果:
react-markdown,# React,react.js,編輯器,javascript

相關(guān)鏈接

react-markdown github 源碼
for-editor github
markdown-navbar github文章來源地址http://www.zghlxwxcb.cn/news/detail-642403.html

到了這里,關(guān)于React markdown 編輯器的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • react-app框架——使用monaco editor實(shí)現(xiàn)online編輯html代碼編輯器

    react-app框架——使用monaco editor實(shí)現(xiàn)online編輯html代碼編輯器

    大家好,我是yma16,本文分享關(guān)于 react-app框架——使用monaco editor實(shí)現(xiàn)online編輯html代碼編輯器。 monaco editor 編輯器 Monaco Editor是一款功能強(qiáng)大的Web編輯器,由微軟開發(fā)并使用在多個(gè)項(xiàng)目中。它是基于VS Code編輯器的核心組件,具有類似的功能和用戶體驗(yàn)。 Monaco Editor具有以下特點(diǎn)

    2024年01月20日
    瀏覽(39)
  • react-codemirror2 編輯器需點(diǎn)擊一下或者延時(shí)才顯示數(shù)據(jù)的問題

    現(xiàn)象: ? ? ? ? Codemirror/組件的數(shù)據(jù)已經(jīng)賦上值的情況下,初始狀態(tài)不渲染數(shù)據(jù),需要點(diǎn)擊編輯框獲取焦點(diǎn)后才展示,或者延遲了幾秒才顯示出來。 原因: ????????指定了一些依賴的版本,可能不兼容了一些功能,導(dǎo)致這個(gè)現(xiàn)象出現(xiàn) 解決: ? ? ? ? 1. 手動(dòng)引入 自動(dòng)刷新

    2024年02月13日
    瀏覽(20)
  • Markdown編輯器

    Markdown編輯器

    你好! 這是你第一次使用 Markdown編輯器 所展示的歡迎頁。如果你想學(xué)習(xí)如何使用Markdown編輯器, 可以仔細(xì)閱讀這篇文章,了解一下Markdown的基本語法知識。 我們對Markdown編輯器進(jìn)行了一些功能拓展與語法支持,除了標(biāo)準(zhǔn)的Markdown編輯器功能,我們增加了如下幾點(diǎn)新功能,幫助你

    2024年02月02日
    瀏覽(31)
  • Markdown編輯器 測試

    Markdown編輯器 測試

    測試一下@TOC 你好! 這是你第一次使用 Markdown編輯器 所展示的歡迎頁。如果你想學(xué)習(xí)如何使用Markdown編輯器, 可以仔細(xì)閱讀這篇文章,了解一下Markdown的基本語法知識。 我們對Markdown編輯器進(jìn)行了一些功能拓展與語法支持,除了標(biāo)準(zhǔn)的Markdown編輯器功能,我們增加了如下幾點(diǎn)新

    2024年02月06日
    瀏覽(18)
  • Vue使用markdown編輯器

    1.安裝 2.main.js全局注冊 3.vue頁面使用 4.文章預(yù)覽

    2024年01月25日
    瀏覽(25)
  • Avalonia開發(fā)Markdown編輯器

    今天熟悉Avalonia UI,做一個(gè)Markdown的文本編輯器。 代碼我上傳了Github,地址: https://github.com/raokun/AvaloniaMarkdown.git 我使用開發(fā)工具的是visual studio 2022 preview ,上一篇博客已經(jīng)寫過了SDK的安裝和基礎(chǔ)項(xiàng)目的創(chuàng)建,需要了解的可以跳轉(zhuǎn)查看: 創(chuàng)建Avalonia 模板項(xiàng)目-基礎(chǔ) 由于Avaloni

    2024年02月11日
    瀏覽(27)
  • asp.net MVC markdown編輯器

    在 ASP.NET MVC 中,你可以使用一些第三方 Markdown 編輯器來讓用戶在網(wǎng)頁上方便地編輯和預(yù)覽 Markdown 內(nèi)容。這些編輯器通常提供實(shí)時(shí)預(yù)覽功能,將 Markdown 文本轉(zhuǎn)換為實(shí)時(shí)渲染的 HTML,并支持編輯器工具欄來輔助用戶編輯。 以下是一些流行的 ASP.NET MVC Markdown 編輯器: Editor.md :

    2024年02月15日
    瀏覽(27)
  • VUE2.0集成 Markdown 編輯器

    VUE2.0集成 Markdown 編輯器

    Markdown編輯器的使用 這是一款基于Vue的markdown編輯器。既可以用來編輯Markdown語法,又可以用來解析 效果圖,mavonEditor實(shí)現(xiàn)了Markdown集成 Markdown是一種標(biāo)記語言,相較于word文檔更加清晰方便,適合進(jìn)行筆記等。將Markdown集成進(jìn)入自己項(xiàng)目之后,就可以在項(xiàng)目中使用的Markdown編輯器

    2024年02月10日
    瀏覽(30)
  • 推薦幾款主流好用的markdown編輯器

    推薦幾款主流好用的markdown編輯器

    隨著技術(shù)的不斷發(fā)展和人們對效率的追求,Markdown 編輯器已經(jīng)成為了許多人寫作的首選工具。Markdown 是一種輕量級的標(biāo)記語言,使用簡單,方便快捷,且可以方便地轉(zhuǎn)換成各種格式的文件。在這篇文章中,我們將介紹幾款常用的 Markdown 編輯器,并分析它們的優(yōu)缺點(diǎn)。 1、VS

    2024年02月11日
    瀏覽(19)
  • Vue項(xiàng)目集成Markdown標(biāo)記語言編輯器(MavonEditor)

    Vue項(xiàng)目集成Markdown標(biāo)記語言編輯器(MavonEditor)

    這是一款基于Vue的markdown編輯器。既可以用來編輯Markdown語法,又可以用來解析 效果圖,mavonEditor實(shí)現(xiàn)了Markdown集成 Markdown是一種標(biāo)記語言,相較于word文檔更加清晰方便,適合進(jìn)行筆記等。將Markdown集成進(jìn)入自己項(xiàng)目之后,就可以在項(xiàng)目中使用的Markdown編輯器了 mavon-editor:??2.1

    2024年02月07日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包