我承认这与我之前的问题相似,但并不完全相同。由于我最终使用了 ajax 请求,因此我决定将 opal-jquery 添加到我的堆栈中(除非您知道更简单的方法)并切换到使用Document.ready?
它提供的功能。
我的函数现在看起来像这样:
def render_component component,mount_point
React.render React.create_element(component), Element.find[mount_point][0]
end
我这样称呼它:
Document.ready? do
render_component LoginForm, '#view_port'
end
问题是,在此之前它可以正常工作,而现在,它不是,我遇到了一个Uncaught NoMethodError: undefined method '[]' for nil
错误,它正在工作,然后它突然开始这样做。
错误是因为某种原因 Element.find[mount_point]
正在返回nil
,我不知道为什么。它应该在加载 dom 后运行,因此挂载点'#view_port'
应该存在;正如您在此处看到的,它肯定存在于 dom 中:
<body>
<section id="main">
<section id="view_port">
</section>
</section>
<div class="hiddendiv common"></div>
</body>
我什至试过把它包起来,window.addEventListener("load", function () {}
但没有效果。
为什么现在不起作用?我错过了什么?