Ruby on rails 如何使用webpacker gem了解react JS中的Rails环境?
在javascript中访问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
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组件