javascript - 有没有办法在单击 "non react"dom 元素时调用组件方法

标签 javascript reactjs datatables

这是场景。我使用jQuery Datable 插件创建了表格。在最后一列中,所有行都有一个按钮(一个非 react HTML 元素)。由于表格的所有 HTML 都是由插件自动创建的,因此我们不能对按钮使用 JSX 组件,因此不能使用 onClick react 监听器。

这是我目前正在做的事情:

在我的常规脚本文件中(非 react ):

$(document).on("click", ".my-button", function(){
   //show a popup and add content in it using ajax
});

这是我想在 react 代码中做同样的事情(即在主组件类中)

class LoginForm extends  React.Component {
    constructor(props) {
        super(props);
    }

    //following method is to be called on onClick
    showAPopupAndAddContentAjax() {
      //code
    }

    //other stuff
}

那么有什么方法可以调用任何react监听器方法吗?或者有什么不同的方法来实现这一目标?

PS:我现在无法删除数据表代码,因为它已经编写并且现在无法替换。只需要像 onClick

这样的听众

最佳答案

通常情况下,你不能这样做。因为 React 基于 virtual-dom 概念,并且您希望与核心 dom 交互。

一个棘手的方法是添加类并触发弹出窗口打开:

$(document).on("click", ".my-button", function(){
   $('#your_instance_of_component').addClass('open-popup');
});

// in your react app
const openPopup = ReactDOM.findDOMNode(LoginForm)
                  .getElementsByClassName('open-popup')//[0]

// implement the logic
if(openPopup.length) {
 // do the stuff
}

希望,这有帮助!

<小时/>

更新

我刚刚有了另一个想法,效果很好:

在 jQuery 监听器中,添加查询参数。在 React 应用程序中,您可以在路由更改时调用 dom 监听器。你必须为此付出努力并进行一些研究。希望这现在有帮助!

关于javascript - 有没有办法在单击 "non react"dom 元素时调用组件方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52056631/

相关文章:

jquery - 如何在不与字母搜索插件冲突的 JQuery 数据表的 <td> 单元格中创建超链接?

javascript - jQuery DataTables 默认列值

javascript - 具有不规则间隔的嵌套 settimeout (更复杂的方式)

reactjs - react native 文本输入 : why does secureEntryText shift outside of input box and have ellipsis?

javascript - 移动环境中的网站桌面模式

reactjs - 使用 React 配置 Solidity 合约的最佳方法是什么?

css - 定位语义-ui图标

javascript - 如何使用客户端java脚本显示通过web服务接收的最后N条记录?

javascript - 使用 jquery 变量替换点、冒号或任何其他字符的通用正则表达式

javascript - Javascript 中的字符串到时间