javascript - 无法使基础菜单与 reactJS 一起使用

标签 javascript html reactjs zurb-foundation

我不明白为什么下面的代码不会为我创建基础菜单。下面是我的代码的 super 简化版本:

        var MenuDisplay = React.createClass({

            render: function(){
                console.log("menu display render");
                var menu = (true)?
                <ul className="dropdown menu" data-dropdown-menu>
                            <li>
                                <a id="profile_name">Welcome
                                </a><ul className="menu">
                                    <li>profile</li>
                                    <li className="logout">logout</li>
                                </ul>
                            </li>
                        </ul>
                        : null;
                return(
        <div>
                    {menu}
                    <FoundationPlugin />
                    </div>
                )
            }
        });

        var FoundationPlugin = React.createClass({
            render: function(){
                //applying foundation() the whole document 
                $(document).foundation();
                return(
                    <div></div>
                );
            }
        });

        React.render(
            <MenuDisplay />,
            document.getElementById('myDiv')
        );
  • jsx 或 html 设置没有问题,我在“正常”html 中测试了它并在菜单上运行 $().foundation。它正确显示菜单

  • 如果我在所有代码之后应用 .Foundation() 而不是在 FoundationPlugin 组件内部应用,上面的代码就可以工作。 但是我必须这样做。原因是我首先从 RestApi 获取数据,这需要一些时间。如果我将 $().foundation() 放在外面,当它到达 $().Foundation() 时,我的组件仍然没有获取数据并且没有呈现正确的 html 标记。我必须在所有渲染完成后运行 $().foundation。

最佳答案

React 组件有几个生命周期函数。如果您需要等待渲染完成并更新实际的 DOM,那么 componentDidMount 就是您所需要的。

var MenuDisplay = React.createClass({
  componentDidMount: function(){
    // Do stuff that relies on your DOM being rendered here.
    // Usually anything related to external libs like jQuery etc.
  },
  render: function(){
    ....
    ....
  }
})

希望这对您有所帮助。

关于javascript - 无法使基础菜单与 reactJS 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36104976/

相关文章:

javascript - 将数据推送到 JSON 对象 javascript

javascript - 在 redux 中处理 View 逻辑

javascript - 使用 "onClick={}"被认为是一种不好的做法吗?

reactjs - Electron :使用上下文菜单粘贴字符串

javascript - 显示时日期格式错误

javascript - AngularJs ngRepeat系列?

javascript - 为数据表中的各个行添加点击事件(JQuery)

javascript - 清除相对定位产生的空白并保持移动的对象不受影响

php - 无法在注册页面上发布错误

javascript - 单击输入字段触发 jQuery 函数