Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.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
Javascript React.js中的初始值设定项?_Javascript_Ruby On Rails_Reactjs - Fatal编程技术网

Javascript React.js中的初始值设定项?

Javascript React.js中的初始值设定项?,javascript,ruby-on-rails,reactjs,Javascript,Ruby On Rails,Reactjs,我正在react-rails 4.2.1应用程序中使用react-rails和browserify-rails。我不是在做单页应用程序,而是在呈现的页面上添加react组件,并使用rails路由系统 当我加载一个页面时,我想初始化一些东西,但我不确定这段代码应该放在哪里。react是否有一个初始值设定项函数,它总是在呈现组件之前调用,还是总是先呈现第一个组件,这样我就可以将初始值设定项代码添加到第一个组件 如何将react初始化器代码放入我的多页rails应用程序中?(应适用于呈现的客户端或服务

我正在
react-rails 4.2.1
应用程序中使用
react-rails
browserify-rails
。我不是在做单页应用程序,而是在呈现的页面上添加
react
组件,并使用
rails
路由系统

当我加载一个页面时,我想初始化一些东西,但我不确定这段代码应该放在哪里。
react
是否有一个初始值设定项函数,它总是在呈现组件之前调用,还是总是先呈现第一个组件,这样我就可以将初始值设定项代码添加到第一个组件

如何将
react
初始化器代码放入我的多页
rails
应用程序中?(应适用于呈现的客户端或服务器
react
code)

注意:假设只使用
react
和纯
javascript


编辑:不要求对每个组件进行初始化,而是在页面加载之后,但在react开始遍历和呈现任何组件之前初始化代码。

是的,react的文档中都有。每个组件都有一个getInitialState,在第一次请求对象时调用它,然后在卸载组件时调用oncompentdidmount和另一个。它都是JavaScript代码,所以初始化代码可以在每个组件内完成,或者在React代码执行之前或之后全局声明

我对Django也有类似的设置,我使用Django的优点。路由、会话、身份验证、Rest API等。。。并让Django呈现一个加载React UI的bar bones模板。这个过程似乎工作得很好,它大大加快了我的网站从它以前的位置,用户界面是可怕的


因此,在我的django应用程序的一个特殊情况下,我需要在React组件尝试呈现它们自己之前初始化某些数据。因此,我将初始化代码包装到一个函数中,该函数在页面加载时被调用,然后在该函数完成后作为回调调用另一个函数,该函数实际上将我的react组件添加到页面中。从这里开始,每个组件都有自己的初始化,您已经说过您现在不感兴趣,但这就是我处理这种情况的方式

初始化React的入口点是调用
React.render()
,因此您应该在调用之前执行任何初始化。如果初始化是异步的,只需在回调中调用
React.render()


此外,每个组件上都有
componentWillMount
方法,可用于特定于组件的初始化

谢谢你的回答,但这不是我想要的。我编辑了我的问题,希望它能澄清我的问题。我回答了React启动前如何进行初始化,以及组件初始化。正如我所说,在调用
React.render()
之前,在页面加载时执行此操作。谢谢您的回答,但这并不是我真正想要的。我编辑了我的问题,希望它能澄清我的问题。好的,没问题,我用一个新的段落更新了我的答案,我想这能解决你的问题。