Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何使用webpacker gem了解react JS中的Rails环境?_Ruby On Rails_Reactjs_Webpack_Webpacker - Fatal编程技术网

Ruby on rails 如何使用webpacker gem了解react JS中的Rails环境?

Ruby on rails 如何使用webpacker gem了解react JS中的Rails环境?,ruby-on-rails,reactjs,webpack,webpacker,Ruby On Rails,Reactjs,Webpack,Webpacker,在javascript中访问Rails.env的最佳方式是什么 目前,我正在对现有的Rails项目使用ReactJS,使用webpackergem。(不使用react railsgem) 我试过什么 从rails应用程序(我的根组件所在的视图模板)设置一个javascript变量,并在根组件JS中访问它。但是这种方法看起来很冗长,因为我需要在react应用程序的JS文件中传递该变量 有没有更好的办法 你可以使用gem。Gon允许您将rails变量推送到js中的全局变量 在控制器中: c

在javascript中访问
Rails.env
的最佳方式是什么

目前,我正在对现有的Rails项目使用ReactJS,使用
webpacker
gem。(不使用
react rails
gem)

我试过什么

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

有没有更好的办法

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

在控制器中:

     class SampleController
       def index
         gon.variable_name = variable_value
         ....
       end
然后您可以通过这种方式访问js中的变量

      console.log(gon.variable_name)

另一个(我认为更好的)解决方案是查询另一个rails操作所需的数据。在react组件中,您可以为此使用
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将数据发送到所有子组件

我更想问的是,为什么react代码中都有需要知道它们在哪个环境中运行的区域。环境之间发生变化的次数应该非常少,并且主要局限于网络问题,而不是整个应用程序。到目前为止,我发现很少有地方,API模块和一个特定于环境的组件。值得检查
gon
gem。但我不太了解通过react组件的第二种方法,您可以从服务器获取数据,将其保存到状态,然后将其传递到childs组件