欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

完美解決react-codemirror2?編輯器需點擊一下或者延時才顯示數(shù)據(jù)的問題

 更新時間:2023年08月11日 10:58:32   作者:一車雞蛋  
這篇文章主要介紹了react-codemirror2編輯器需點擊一下或者延時才顯示數(shù)據(jù)的問題,解決方法也很簡單,需要手動引入自動刷新的插件,配置一下參數(shù)就可以了,本文給大家介紹的非常詳細,需要的朋友可以參考下

react-codemirror2 編輯器需點擊一下或者延時才顯示數(shù)據(jù)的問題

現(xiàn)象:

        <Codemirror/>組件的數(shù)據(jù)已經(jīng)賦上值的情況下,初始狀態(tài)不渲染數(shù)據(jù),需要點擊編輯框獲取焦點后才展示,或者延遲了幾秒才顯示出來。

原因:

        指定了一些依賴的版本,可能不兼容了一些功能,導致這個現(xiàn)象出現(xiàn)

解決:

        1. 手動引入自動刷新的插件 ;

        2. 配置一下參數(shù) 。

代碼如下:

import {UnControlled as CodeMirror} from 'react-codemirror2';
import 'codemirror/lib/codemirror.css';
import 'codemirror/mode/sql/sql'; 
...
// 引入自動刷新
import 'codemirror/addon/display/autorefresh'
<CodeMirror 
    value={format(code,{lanuage:'plsql'})} 
    options={
        autoRefresh: true, // 重點是這句,為true
        scrollbarStyle: null,
        mode: 'text/x-pgsql',
        theme: 'material',
        autofocus: false,
        readOnly: false,
        lineNumbers: true, 
        smartIndent: true,
        lint: true,
        lintWrapping: true
   } 
    onChange={(editor,data,value)=>{...}}
>
</CodeMirror>

官網(wǎng):https://github.com/uiwjs/react-codemirror

react-codemirror2 代碼編輯器

CodeMirror是一款在線的支持語法高亮的代碼編輯器。官網(wǎng): http://codemirror.net/

安裝:

npm install react-codemirror2 codemirror --save

使用:

import 'codemirror/lib/codemirror.js';
import 'codemirror/lib/codemirror.css';
// 主題風格
import 'codemirror/theme/solarized.css';
// 設置代碼語言模式(比如JS,SQL,python,java等)
import 'codemirror/mode/javascript/javascript';
import 'codemirror/mode/sql/sql.js';
import 'codemirror/mode/python/python.js';
import 'codemirror/mode/shell/shell.js';
import 'codemirror/mode/clike/clike.js';
// 代碼模式,clike是包含java,c++等模式的
import 'codemirror/mode/clike/clike';
import 'codemirror/mode/css/css';
//ctrl+空格代碼提示補全
import 'codemirror/addon/hint/show-hint.css'; // start-ctrl+空格代碼提示補全
import 'codemirror/addon/hint/show-hint.js';
import 'codemirror/addon/hint/anyword-hint.js'; // end
//代碼高亮
import 'codemirror/addon/selection/active-line';
//折疊代碼
import 'codemirror/addon/fold/foldgutter.css';
import 'codemirror/addon/fold/foldcode.js';
import 'codemirror/addon/fold/foldgutter.js';
import 'codemirror/addon/fold/brace-fold.js';
import 'codemirror/addon/fold/comment-fold.js';
function ScriptTask() {
    const [instance, setInstance] = useState(null);
    const [codeData, setCodeData] = useState('');
    return (
        <CodeMirror
          editorDidMount={(editor) => {
              setInstance(editor);
          }}
          value={codeData}
          options={{
              // mode: { name: 'text/sql' }, //定義mode
              mode: 'sql', //定義mode
              theme: 'solarized', //選中的theme
              autofocus: true, //自動獲取焦點
              styleActiveLine: true, //光標代碼高亮
              lineNumbers: true, //顯示行號
              smartIndent: true, //自動縮進
              //start-設置支持代碼折疊
              lineWrapping: true,
              foldGutter: true,
              gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter'], //end
              extraKeys: {
                  Ctrl: 'autocomplete',
                  'Ctrl-S': function(editor) {
                      this.codeSave(editor);
                  },
                  'Ctrl-Z': function(editor) {
                      editor.undo();
                  }, //undo
                  F8: function(editor) {
                      editor.redo();
                  } //Redo
              },
              matchBrackets: true, //括號匹配,光標旁邊的括號都高亮顯示
              autoCloseBrackets: true //鍵入時將自動關閉()[]{}''""
          }}
          // onChange={changeCode}
          // 在失去焦點的時候觸發(fā),這個時候放數(shù)據(jù)最好
          // onBlur={this.codeOnBlur}
          // 這個必須加上,否則在一些情況下,第二次打開就會有問題
          //     onBeforeChange={(editor, data, value) => {
          //       console.log("onBeforeChange fresh")
          //       console.log(JSON.stringify(data));
          //     }}
      />
    )
}

CodeMirror 事件

1.onChange(instance,changeObj):codeMirror文本被修改后觸發(fā)。instance是一個當前的codemirror對象,changeObj是一個{from,to,text[,removed][,origin]}對象。其中from,to分別表示起始行對象和結束行對象,行對象包括ch:改變位置距離行頭的間隔字符,line:改變的行數(shù)。text是一個字符串數(shù)組表示被修改的文本內(nèi)容,即你輸入的內(nèi)容。

2.onBeforeChange(instance,changObj):內(nèi)容改變前被調(diào)用

3.onCursorActivity(instance):當鼠標點擊內(nèi)容區(qū)、選中內(nèi)容、修改內(nèi)容時被觸發(fā)

4.onKeyHandled:(instance,name,event):當一個都dom元素的事件觸發(fā)時調(diào)用,name為操作名稱。

5.onInputRead(insatance,changeObj):當一個新的input從隱藏的textara讀取出時調(diào)用

6.onBeforeSelectionChange(instance,obj):當選中的區(qū)域被改變時調(diào)用,obj對象是選擇的范圍和改變的內(nèi)容(本人未測試成功)

7.onUpdate(instance):編輯器內(nèi)容被改變時觸發(fā)

8.onFocus(instance):編輯器獲得焦點式觸發(fā)

9.onBlur(instance):編輯器失去焦點時觸發(fā)

CodeMirror 常用方法

getValue():獲取編輯器文本內(nèi)容

setValue(text):設置編輯器文本內(nèi)容

getRange({line,ch},{line,ch}):獲取指定范圍內(nèi)的文本內(nèi)容第一個對象是起始坐標,第二個是結束坐標

replaceRange(replaceStr,{line,ch},{line,ch}):替換指定區(qū)域的內(nèi)容

getLine(line):獲取指定行的文本內(nèi)容

lineCount():統(tǒng)計編輯器內(nèi)容行數(shù)

firstLine():獲取第一行行數(shù),默認為0,從開始計數(shù)

lastLine():獲取最后一行行數(shù)

getLineHandle(line):根據(jù)行號獲取行句柄

getSelection():獲取鼠標選中區(qū)域的代碼

replaceSelection(str):替換選中區(qū)域的代碼

setSelection({line:num,ch:num1},{line:num2,ch:num3}):設置一個區(qū)域被選中

somethingSelected():判斷是否被選擇

getEditor():獲取CodeMirror對像

undo():撤銷

redo():回退

到此這篇關于react-codemirror2 編輯器需點擊一下或者延時才顯示數(shù)據(jù)的問題的文章就介紹到這了,更多相關react-codemirror2 編輯器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 記一個React.memo引起的bug

    記一個React.memo引起的bug

    memo可以自己決定是否更新,但它是一個函數(shù)組件而非一個類,本文主要介紹了React.memo引起的bug,具有一定的參考價值,感興趣的可以了解一下
    2022-03-03
  • react裝飾器與高階組件及簡單樣式修改的操作詳解

    react裝飾器與高階組件及簡單樣式修改的操作詳解

    這篇文章主要介紹了react裝飾器與高階組件及簡單樣式修改的操作,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-09-09
  • react 父組件與子組件之間的值傳遞的方法

    react 父組件與子組件之間的值傳遞的方法

    本篇文章主要介紹了react 父組件與子組件之間的值傳遞的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 淺談react+es6+webpack的基礎配置

    淺談react+es6+webpack的基礎配置

    下面小編就為大家?guī)硪黄獪\談react+es6+webpack的基礎配置。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 基于react封裝一個通用可編輯組件

    基于react封裝一個通用可編輯組件

    前段時間接到這樣一個需求,需要封裝一個組件實現(xiàn)可編輯,這個到底有多通用呢,就是需要在普通的文字展示包括表格,列表等等,所以本文將給大家介紹如何基于react封裝一個通用可編輯組件,需要的朋友可以參考下
    2024-02-02
  • React項目中axios的封裝與API接口的管理詳解

    React項目中axios的封裝與API接口的管理詳解

    Axios是一個npm軟件包,允許應用程序將HTTP請求發(fā)送到Web API,下面這篇文章主要給大家介紹了關于React項目中axios的封裝與API接口的管理的相關資料,需要的朋友可以參考下
    2021-09-09
  • React狀態(tài)管理Redux的使用介紹詳解

    React狀態(tài)管理Redux的使用介紹詳解

    redux是redux官方react綁定庫,能夠使react組件從redux store中讀取數(shù)據(jù),并且向store分發(fā)actions以此來更新數(shù)據(jù),這篇文章主要介紹了react-redux的設置,需要的朋友可以參考下
    2022-09-09
  • react字符串匹配關鍵字高亮問題

    react字符串匹配關鍵字高亮問題

    這篇文章主要介紹了react字符串匹配關鍵字高亮問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • React翻頁器的實現(xiàn)(包含前后端)

    React翻頁器的實現(xiàn)(包含前后端)

    本文主要介紹了React翻頁器的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • React?hook實現(xiàn)簡單的websocket封裝方式

    React?hook實現(xiàn)簡單的websocket封裝方式

    這篇文章主要介紹了React?hook實現(xiàn)簡單的websocket封裝方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09

最新評論