最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

現(xiàn)象:

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

原因:

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

解決:

        1. 手動(dòng)引入自動(dòng)刷新的插件 ;

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

代碼如下:

import {UnControlled as CodeMirror} from 'react-codemirror2';
import 'codemirror/lib/codemirror.css';
import 'codemirror/mode/sql/sql'; 
...
// 引入自動(dòng)刷新
import 'codemirror/addon/display/autorefresh'
<CodeMirror 
    value={format(code,{lanuage:'plsql'})} 
    options={
        autoRefresh: true, // 重點(diǎn)是這句,為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是一款在線的支持語(yǔ)法高亮的代碼編輯器。官網(wǎng): http://codemirror.net/

安裝:

npm install react-codemirror2 codemirror --save

使用:

import 'codemirror/lib/codemirror.js';
import 'codemirror/lib/codemirror.css';
// 主題風(fēng)格
import 'codemirror/theme/solarized.css';
// 設(shè)置代碼語(yǔ)言模式(比如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+空格代碼提示補(bǔ)全
import 'codemirror/addon/hint/show-hint.css'; // start-ctrl+空格代碼提示補(bǔ)全
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, //自動(dòng)獲取焦點(diǎn)
              styleActiveLine: true, //光標(biāo)代碼高亮
              lineNumbers: true, //顯示行號(hào)
              smartIndent: true, //自動(dòng)縮進(jìn)
              //start-設(shè)置支持代碼折疊
              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, //括號(hào)匹配,光標(biāo)旁邊的括號(hào)都高亮顯示
              autoCloseBrackets: true //鍵入時(shí)將自動(dòng)關(guān)閉()[]{}''""
          }}
          // onChange={changeCode}
          // 在失去焦點(diǎn)的時(shí)候觸發(fā),這個(gè)時(shí)候放數(shù)據(jù)最好
          // onBlur={this.codeOnBlur}
          // 這個(gè)必須加上,否則在一些情況下,第二次打開就會(huì)有問(wèn)題
          //     onBeforeChange={(editor, data, value) => {
          //       console.log("onBeforeChange fresh")
          //       console.log(JSON.stringify(data));
          //     }}
      />
    )
}

CodeMirror 事件

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

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

3.onCursorActivity(instance):當(dāng)鼠標(biāo)點(diǎn)擊內(nèi)容區(qū)、選中內(nèi)容、修改內(nèi)容時(shí)被觸發(fā)

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

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

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

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

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

9.onBlur(instance):編輯器失去焦點(diǎn)時(shí)觸發(fā)

CodeMirror 常用方法

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

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

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

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

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

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

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

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

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

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

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

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

somethingSelected():判斷是否被選擇

getEditor():獲取CodeMirror對(duì)像

undo():撤銷

redo():回退

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

相關(guān)文章

  • react的嚴(yán)格模式和解決react useEffect執(zhí)行兩次問(wèn)題

    react的嚴(yán)格模式和解決react useEffect執(zhí)行兩次問(wèn)題

    文章總結(jié):本文詳細(xì)探討了React中useEffect執(zhí)行兩次的問(wèn)題,主要?dú)w因于React的嚴(yán)格模式,嚴(yán)格模式在開發(fā)模式下會(huì)故意重復(fù)調(diào)用一些生命周期方法,以幫助開發(fā)者發(fā)現(xiàn)潛在的問(wèn)題,包括不安全的生命周期、過(guò)時(shí)的ref API、廢棄的findDOMNode方法、意外的副作用等
    2025-01-01
  • create-react-app開發(fā)常用配置教程

    create-react-app開發(fā)常用配置教程

    這篇文章主要為大家介紹了create-react-app開發(fā)常用配置教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • React手稿之 React-Saga的詳解

    React手稿之 React-Saga的詳解

    這篇文章主要介紹了React手稿之 React-Saga的詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • React Native 錯(cuò)誤解決方案

    React Native 錯(cuò)誤解決方案

    本文將系統(tǒng)梳理React Native中的錯(cuò)誤類型、核心處理工具、實(shí)戰(zhàn)場(chǎng)景解決方案及監(jiān)控策略,幫助開發(fā)者構(gòu)建更穩(wěn)健的跨平臺(tái)應(yīng)用,感興趣的朋友跟隨小編一起看看吧
    2025-10-10
  • React Native按鈕Touchable系列組件使用教程示例

    React Native按鈕Touchable系列組件使用教程示例

    這篇文章主要為大家介紹了React Native按鈕Touchable系列組件使用教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • React文件分段上傳實(shí)現(xiàn)方法詳解

    React文件分段上傳實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了React文件分段上傳實(shí)現(xiàn)方法,將文件切成多個(gè)小的文件;將切片并行上傳;所有切片上傳完成后,服務(wù)器端進(jìn)行切片合成;當(dāng)分片上傳失敗,可以在重新上傳時(shí)進(jìn)行判斷,只上傳上次失敗的部分實(shí)現(xiàn)斷點(diǎn)續(xù)傳;當(dāng)切片合成為完整的文件,通知客戶端上傳成功
    2022-11-11
  • React實(shí)現(xiàn)基于Antd密碼強(qiáng)度校驗(yàn)組件示例詳解

    React實(shí)現(xiàn)基于Antd密碼強(qiáng)度校驗(yàn)組件示例詳解

    這篇文章主要為大家介紹了React實(shí)現(xiàn)基于Antd密碼強(qiáng)度校驗(yàn)組件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • 關(guān)于React中setState同步或異步問(wèn)題的理解

    關(guān)于React中setState同步或異步問(wèn)題的理解

    相信很多小伙伴們都一直在疑惑,setState 到底是同步還是異步。本文就詳細(xì)的介紹一下React中setState同步或異步問(wèn)題,感興趣的可以了解一下
    2021-11-11
  • 關(guān)于React中的聲明式渲染框架問(wèn)題

    關(guān)于React中的聲明式渲染框架問(wèn)題

    這篇文章主要介紹了React中的聲明式渲染框架,我們先討論了命令式和聲明式這兩種范式的差異,其中命令式更加關(guān)注過(guò)程,而聲明式更加關(guān)注結(jié)果,對(duì)React渲染框架知識(shí)感興趣的朋友跟隨小編一起看看吧
    2022-06-06
  • React Native 通告消息豎向輪播組件的封裝

    React Native 通告消息豎向輪播組件的封裝

    這篇文章主要介紹了React Native 通告消息豎向輪播組件的封裝,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10

最新評(píng)論

汕尾市| 温泉县| 恩平市| 玉林市| 昭苏县| 精河县| 靖边县| 调兵山市| 微博| 莲花县| 永嘉县| 平顺县| 阿拉善左旗| 兴海县| 沐川县| 广平县| 宝鸡市| 汤阴县| 台安县| 罗江县| 潼关县| 定南县| 闸北区| 延川县| 黎川县| 兰州市| 闽侯县| 南宁市| 徐水县| 东阿县| 尚志市| 中江县| 广河县| 兰考县| 丰顺县| 汉中市| 镇宁| 五指山市| 新晃| 彰化市| 固安县|