これは私の以前の質問と似ていることは認めますが、まったく同じではありません。Document.ready?
最後に ajax リクエストを使用しているので、opal-jquery をスタックに追加することにし (より簡単な方法を知らない限り)、それによって提供される関数の使用に切り替えました。
私の関数は次のようになります。
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
わかりません。'#view_port'
マウントポイントが存在するように、dom がロードされた後に実行する必要があります。ここでわかるように、それは間違いなくdomに存在します:
<body>
<section id="main">
<section id="view_port">
</section>
</section>
<div class="hiddendiv common"></div>
</body>
私もそれを包んでみましwindow.addEventListener("load", function () {}
たが、効果がありませんでした。
なぜ今それが機能していないのですか?私は何を逃したのですか?