[英]How to make Twitter widget.js run properly on first page load using `link_to` with Turbolinks on Rails 5
[英]How can i make document.addEventListener 'turbolinks:load' run when i came from link_to helper via react Webpacker on Rails 5?
所以,我的项目使用与on Rails的5 Webpacker反应。如果我去通过页面link_to
助手好像下的javascript document.addEventListener('turbolinks:load')
不工作。
这是我的根控制器insurance_form_container.jsx
import React from 'react'
import ReactDOM from 'react-dom'
import StartForm from './insurance_form/start_form'
console.log('root react')
document.addEventListener('turbolinks:load',function () {
ReactDOM.render(
<StartForm />,
document.getElementById('start-form-index-container')
)
})
这是我的这条路线的html模板
<div class="container">
<div id="start-form-index-container">
</div>
</div>
<%= content_for(:footer) do %>
<%= javascript_pack_tag('insurance_form_container') %>
<% end %>
这是我另一页的链接。
<%= link_to users_insurance_form_start_path,
class: 'btn btn-lg btn-success btn-primary-green' do %>
ดำเนินการต่อ
<% end %>
好像console.log('root react')
正在正确运行,但是ReactDOM.render
根本没有运行。 除非我刷新页面,否则它加载正确。
我想念什么吗? 我该如何通过link_to
helper运行.jsx
代码?
谢谢!
我认为它正在执行您要执行的操作。 它添加了一个事件监听器(但是会在turbolinks:load
事件之后发生)。 因此,它仅在导航到另一个页面后才执行,这将是添加侦听器后的第一个turbolinks:load
事件。
如果将其放在该页面上,并且希望它在页面加载时执行,请不要将其放在事件侦听器中如何on event trigger
document.on("turbolinks:load", function() {
ReactDOM.render(
<StartForm />,
document.getElementById('start-form-index-container')
)
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.