react-helmet与react-rails服务器端渲染

时间:2018-10-09 17:31:38

标签: reactjs ruby-on-rails-5 serverside-rendering react-rails react-helmet

我正在尝试将react-helmet与react-rails和webpacker一起使用,并启用服务器端渲染,以便在用户在不同路线上导航时能够处理meta标签的生成。我能够在服务器上生成页面并获取页面的内容,但是缺少用于生成它们的元标记react-helmet。尽管在客户端,react-helmet确实可以很好地完成工作,但是在服务器端,meta标签没有交付。为什么没有在应用程序的整个其他部分同时在服务器端执行react-helmet的任何原因?

// App.js
// if window defined else ...

<StaticRouter location={this.props.path} context={context}>
  <Route path='/' render=>{ routerProps => <Landing {...routerProps}/>}/>
</StaticRouter>

// Landing
// render ...

<section>
  <Helmet
    title={'Title'}
      meta={[
        {"name": "robots", "content": "index, follow"},
        {"property": "og:site_name", "content": ""},
        {"property": "og:title", "content": ''},
        {"property": "og:type", "content": "website"},
        {"property": "og:url", "content": this.props.path },
        {"property": "og:description", "content": '...'},
      ]}
  />
  ...
</section>

// views/main.slim

= react_component "App", {} , { prerender: true }

// app/javascript/packs/application.js

var componentRequireContext = require.context("my_app", true)
var ReactRailsUJS = require("react_ujs")
ReactRailsUJS.useContext(componentRequireContext)

任何帮助将不胜感激。谢谢。

0 个答案:

没有答案