在 ReactJS 的 textarea 中添加行号

Posted

技术标签:

【中文标题】在 ReactJS 的 textarea 中添加行号【英文标题】:Adding line numbers in textarea in ReactJS 【发布时间】:2020-11-16 10:48:55 【问题描述】:

我通过以下链接在我的 ReactJS 组件中的 textarea 中显示行号。

html adding line numbers to textarea

这行有一个完美的解决方案,链接是this。

此链接在演示中运行良好,但是当我在我的 ReactJS 代码中使用它时,它不起作用。以下是我实施的方式

Index.html:

在这个文件中,我是这样导入我的 JS 文件的:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script src="jquery-linedtextarea.js"></script>
  <link href="jquery-linedtextarea.css" type="text/css" rel="stylesheet" />
<script>
  $(function() 
    $(".lined").linedtextarea(
      selectedLine: 1
    );
  );
</script>

EditorModal.js: 然后在这个文件中,我使用textarea 作为:

<textarea class="lined" id="lined" rows="10" cols="60">javascript was originally developed by Brendan
   Eich of Netscape under the name Mocha,
   which was later renamed to LiveScript,
   and finally to JavaScript.
</textarea>

执行此操作后,我在 textarea 中看到了任何行号。如何使用带有 textarea 标签的 thorse JS 文件?

【问题讨论】:

这些导入发生在哪里?在index.html?您构建的应用程序 JS 文件在哪里导入?该 jQuery 代码需要在您的应用渲染后运行。 @Jayce444 是的,导入在index.html。 JS 文件位于 src 文件夹中。但是当我在组件中使用这个 JQuery 代码时,我得到错误TypeError: Cannot read property 'fn' of undefined。我可以在类组件中使用 JQuery 代码吗? 【参考方案1】:

React 中的表单元素不同。 textarea 是自闭合标签,你也不能在 react 中使用 class,因为它是 javascript 中的保留关键字,你应该使用 className 来代替。除了使用插件之外,还有一种更简单的方法来多行你的 textarea 值。您正在使用反应,这意味着您可以改用对象文字。如果您正在使用 react,请将您的 EditorModal.js 文件更改为如下所示,并且一切都应该没问题。

import React from 'react';

class EditorModal extends React.Component 

    state = 
        textarea: `
        JavaScript was originally developed by Brendan
        Eich of Netscape under the name Mocha,
        which was later renamed to LiveScript,
        and finally to JavaScript.
        `
    
    render()
        return (
            <div>
            <textarea 
                className="lined" 
                id="lined" 
                rows="10" 
                cols="60"
                value=this.state.textarea 
                />
            </div>
        )
    


export default EditorModal

如果您已将 react 添加到您的网站并且尚未创建简单的页面响应应用程序,您也可以将以下内容添加到 EditorModel.js。记得将 JSX 脚本也添加到您的代码中。你也可以使用这个guideline:

'use strict';

class EditorModal extends React.Component 

  state=
    textarea: `
      JavaScript was originally developed by Brendan
      Eich of Netscape under the name Mocha,
      which was later renamed to LiveScript,
      and finally to JavaScript.
    `
  

  render() 

    return (
        <textarea 
          className="lined" 
          id="lined" 
          rows="10" 
          cols="60"
          value=this.state.textarea 
        />
    );
  



ReactDOM.render(<EditorModal />, document.getElementById('root'));

【讨论】:

以上是关于在 ReactJS 的 textarea 中添加行号的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ReactJS 中使用换行符设置 textarea 值

提交后清除reactJs textarea

在 React 中的光标位置从 select 添加一个名称标签到 textarea

如何将自动换行添加到 EditorGUILayout.TextArea?

vue textarea空格和换行处理

placeholder中文字添加换行方法