【问题标题】:React components for highlighting text and reloading highlights from files用于突出显示文本和从文件重新加载突出显示的 React 组件
【发布时间】:2019-08-18 15:29:27
【问题描述】:

我正在努力创建具有以下功能的文本荧光笔:

  • 它允许用户选择和突出显示/取消突出显示文本 不同颜色的页面。
  • 从文件中加载突出显示(在页面中搜索文件中的单词并突出显示它们)。

我能够使用 rangy https://github.com/timdown/rangy(它不是反应组件)创建突出显示和删除突出显示功能,但是每当页面上的任何组件使用(setState 方法)设置状态时,这些突出显示就会消失。

此外,以前突出显示的项目也不容易使用此方法加载到页面中。

这就是我再次重新开发此功能的原因,我想知道解决此问题的正确方法是什么?

我一直在考虑开发一个自定义的 React 组件来突出显示并将其添加到页面中,但是对于这种方法,我想知道如何在用户选择页面上的文本时动态添加突出显示组件而不会丢失它当状态更新时。

一个关于如何添加动态组件的有用资源的链接对我来说很方便,因为我一直在寻找解决这个问题的正确方法,但我认为我可能没有朝着正确的方向前进。

【问题讨论】:

    标签: javascript reactjs highlight react-component


    【解决方案1】:

    React 将重新渲染状态发生变化的任何内容。这将导致您的突出显示消失,因为即使它们看起来相同,元素也不相同。

    如果您在许多情况下设置a unique key 属性,React 将智能地重新渲染。这让 React 知道要重用组件。

    如果状态正在正确更改,并且您只想有时阻止重新渲染,您应该实现shouldComponentUpdate lifecycle method 来自己控制重新渲染条件。

    【讨论】:

    • 如果亮点不是反应组件怎么办?如果我将它们更改为反应组件,我不知道它们在页面上的位置。有没有办法在不预先指定位置的情况下添加这些组件?
    • 我不确定我是否理解这个问题。但是,您始终可以在普通的旧 javascript 中使用 id 或类名来选择项目。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 2011-08-31
    • 1970-01-01
    • 2020-01-15
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多