1

访问Rails.envjavascript 的最佳方式是什么?

目前我正在使用 ReactJS 和现有的 Rails 项目,使用webpackergem。(不使用react-rails宝石)

我试过什么?

从 rails 应用程序设置一个 javascript 变量(查看我的根组件所在的模板)并在根组件 JS 中访问它。但是这种方法对我来说看起来很冗长,因为我需要在 react 应用程序中的所有 JS 文件中传递该变量。

有没有更好的方法来做到这一点?

4

1 回答 1

1

您可以使用gon宝石。Gon 允许您将 rails 变量推送到 js 中的全局变量。

在控制器中:

     class SampleController
       def index
         gon.variable_name = variable_value
         ....
       end

然后你可以通过这种方式访问​​js中的变量

      console.log(gon.variable_name)

另一个(我认为更好的)解决方案是查询另一个 Rails 操作所需的数据。在您的反应组件中,您可以使用componentDidMount

componentDidMount(){
   fetch('http://url_to_fetch_data_from_server', {
     method: 'get',
     headers: {
       Accept: 'application/json, text/plain, */*',
       'Content-Type': 'application/json',
       'X-CSRF-Token': 'token get from metatag',
  },
   credentials: 'same-origin',
}).then(response => {
     response.json().then(json =>{
       this.setState(yourData: json.yourData)
     })
  })
}

然后你可以通过 props 向所有子组件发送数据

于 2017-09-14T20:08:03.107 回答