使用 React 以类似降价的方式向用户评论添加功能

Posted

技术标签:

【中文标题】使用 React 以类似降价的方式向用户评论添加功能【英文标题】:Adding functionality to user comments in markdown-like fashion with React 【发布时间】:2016-12-31 08:51:01 【问题描述】:

我正在构建一个 React 应用程序,用户可以在其中创建书面指南,这些指南通常会引用地图上的图钉。我希望用户能够在他们的书面指南中以类似降价的方式引用引脚,以便在指南的呈现版本中悬停时突出显示引脚。

但是,我不知道如何处理用户生成的文本,以便它可以调用渲染文本的 react 组件中的函数。

我发现了一个 similar question here 询问如何使用 marked 处理点击事件,并且很高兴遵循类似的方法,但我无法弄清楚如何在我的 React 范围内获取 onclick 中调用的函数咖啡脚本中的组件。

这是上面链接中接受的答案:

var renderer = new marked.Renderer();
renderer.link = (href, title, text) => 
    renderer.link = (href, title, text) => 
        const interceptWithThisFunction = (e) => 
            console.log('click event caught', e);
        
        return `<a onClick="interceptWithThisFunction" href="$href" title="$title">$text</a>`;
    

我对为什么这会在 es6 中起作用感到困惑......因为,当我如下所示在咖啡脚本中编写代码时,我得到:Uncaught ReferenceError:interceptWithThisFunction is not defined。

renderer = new marked.Renderer()
renderer.link = (href, title, text) ->
  interceptWithThisFunction = (e) ->
      console.log('click event caught', e)
  "<a onClick='interceptWithThisFunction' href='#' title='#title'>#text</a>"

这是正确的方法吗?有没有办法让当前设置为 interceptWithThisFunction 的 onClick 调用我的 React 组件上的函数?

【问题讨论】:

【参考方案1】:

我真的找不到常见的“反应标记”库。所以我可以假设,tokeniser 可以在这个 react 风格的标记中返回 JSX,然后你可以编写如下内容:

renderer.link = (href, title, text) => 
renderer.link = (href, title, text) => 
    const interceptWithThisFunction = (e) => 
        console.log('click event caught', e);
    
    return (
      <a onClick=interceptWithThisFunction href=href>text</a>
    );

如果不是这样,那么我只能建议将函数移动到窗口,并将 onclick 处理程序添加到 html,如&lt;a onclick="interceptWithThisFunction" ...

【讨论】:

感谢您的回答 Bloomca!我相信原始海报所指的图书馆是react-marked,但自述文件借用了主要的marked自述文件,所以我想我错过了区别!无论如何,我认为您的解释可能是正确的,今晚我将进行更多调查。

以上是关于使用 React 以类似降价的方式向用户评论添加功能的主要内容,如果未能解决你的问题,请参考以下文章

使用 JET 向数据库字段添加注释

用户输入中的自定义降价

在 React 中单击组件时向兄弟姐妹添加类

如何通过反应以快递方式向mailchimp发送发布请求

如何在 typescript react-native 项目中导入降价文件?

将图像插入 IPython 笔记本降价