Link 到 leanModal.js 在 HTML link 渲染时工作正常但在 React 中不行

Link to leanModal.js works fine in rendered by HTML link but not within React

我正在使用精益模式:http://leanmodal.finelysliced.com.au/ 在带有 React 前端的 Rails 应用程序中。

当我将 link 放入 application.html.erb 中的模式时,它工作正常,但是当使用相同的代码通过 React link 加载时,没有任何反应。

如果代码相同,我已经 jQuery 加载并检查了 10 次。什么会导致这样的问题?

这是 React 中的 link 代码:

<a rel="leanModal" name="login" href="#login">

模板文件(html.erb)脚本:

<script type="text/javascript">
    $(function() {
        $('a[rel*=leanModal]').leanModal({ top : 200, closeButton: ".modal_close" });       
    });

我正在从 Rails 中的 application.js 文件中加载模态 JS。

感谢您的帮助!

您应该将与 DOM 交互的东西(例如 jQuery 插件)包装在一个组件中。

var LeanModal = React.createClass({
    componentDidMount: function(){
        $(this.getDOMNode()).leanModal({
           top: this.props.top || 200
        });    
    },
    render: function(){
        return <div>{this.props.children}</div>;
    }
});

请注意,您还需要提供一个 componentWillUnmount 来处理清理,并且该插件无法执行 add/remove 元素之类的操作。不允许清理或进行破坏性更改的插件与 React 不兼容。

有时仅使用现有的 CSS 实现它并使用 React 组件而不是 jQuery 插件可以非常简单并最终获得更好的结果。