因此,我的项目是使用React与Webpacker的Rails 5。如果我去的页面下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
根本没有运行。除非我刷新页面,否则它正在正确加载。
我错过了什么吗?我怎样才能让.jsx
代码通过link_to
助手运行?
谢谢!
2条答案
按热度按时间xzabzqsa1#
我认为它正在做你告诉它要做的事情。它添加了一个事件侦听器(但那发生在
turbolinks:load
事件之后)。所以它只在你导航到另一个页面之后执行,这将是你添加侦听器之后的第一个turbolinks:load
事件。如果要将其放在该页面上,并且希望它在页面加载时执行,请不要将其放在事件侦听器中使用
on event trigger
如何guicsvcw2#
嘿我也遇到过这种事。
对于其他人,我将react代码与其他刺激代码沿着捆绑在head中,这对于添加文档事件侦听器来说还为时过早。
我将react代码从主包中分离出来,并将其加载到网站的页脚中。现在我可以这样做了: