Rails + React 应用程序页面需要重新加载才能呈现 React
Rails + React App Pages Require Reload To Render React
我使用 rails new exampleapp --webpack=react
创建了一个新的 Rails + React 应用程序。在我的主页上,我在 html.erb
中有一个 header,并且一些反应 jsx 使用 <%= javascript_pack_tag 'reactfilename' %>
呈现。
当我点击 link 到我的主页时,例如 <li><%= link_to "Home", root_path %></li>
,只有 header 被渲染。只有在我重新加载页面时才会显示我的反应组件。
我 运行 rails s
和 ./bin/webpack-dev-server
开始我的申请。我的 Heroku Web 服务器上也出现了同样的问题。其中我有以下设置:
过程文件:
web: bin/rails server -p $PORT -b 0.0.0.0
Procfile.dev:
web: ./bin/rails server
webpacker: ./bin/webpack-dev-server
这是 React + Rails 应用程序的预期行为,还是我的配置有问题?
确保在 turbolink:load
事件后加载组件
document.addEventListener('turbolinks:load', () => {
let container = document.getElementById('react-order')
if (!container) return
ReactDOM.render(
<OrderForm />,
container)
})
我认为这个问题与 turbolinks 后台优化有关。一种解决方法是通过将 turbolinks 设置为 false 来完全刷新页面:
<%= link_to "Home", root_path, data: { turbolinks: false } %>
使用更新版本的 turbolinks:
<%= link_to "Home", root_path, data: { turbo: false } %>
我使用 rails new exampleapp --webpack=react
创建了一个新的 Rails + React 应用程序。在我的主页上,我在 html.erb
中有一个 header,并且一些反应 jsx 使用 <%= javascript_pack_tag 'reactfilename' %>
呈现。
当我点击 link 到我的主页时,例如 <li><%= link_to "Home", root_path %></li>
,只有 header 被渲染。只有在我重新加载页面时才会显示我的反应组件。
我 运行 rails s
和 ./bin/webpack-dev-server
开始我的申请。我的 Heroku Web 服务器上也出现了同样的问题。其中我有以下设置:
过程文件:
web: bin/rails server -p $PORT -b 0.0.0.0
Procfile.dev:
web: ./bin/rails server
webpacker: ./bin/webpack-dev-server
这是 React + Rails 应用程序的预期行为,还是我的配置有问题?
确保在 turbolink:load
事件后加载组件
document.addEventListener('turbolinks:load', () => {
let container = document.getElementById('react-order')
if (!container) return
ReactDOM.render(
<OrderForm />,
container)
})
我认为这个问题与 turbolinks 后台优化有关。一种解决方法是通过将 turbolinks 设置为 false 来完全刷新页面:
<%= link_to "Home", root_path, data: { turbolinks: false } %>
使用更新版本的 turbolinks:
<%= link_to "Home", root_path, data: { turbo: false } %>