React.js中的初始化器?

时间:2015-05-01 17:38:33

标签: javascript ruby-on-rails reactjs

我在使用react 0.13.1rails 4.2.1的{​​{1}}申请中使用react-rails。我不是在执行单页应用程序,而是在呈现的页面上添加browserify-rails组件并使用react路由系统。

当我加载页面时,我想初始化一些内容,但我不确定此代码应该去哪里。 rails是否具有在渲染组件之前始终调用的初始化函数,或者它是否始终首先渲染第一个组件,以便我可以将初始化代码添加到第一个组件中?

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

注意:假设仅使用react和普通react

编辑:不要询问有关每个组件的初始化,而是在页面加载后初始化代码,但是在反应开始并渲染任何组件之前。

2 个答案:

答案 0 :(得分:3)

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

还有每个组件上的componentWillMount方法,可用于组件特定的初始化。

答案 1 :(得分:0)

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

我和Django有类似的设置,我使用Django的优势。路由,会话,身份验证,Rest API等......让Django渲染一个加载React UI的条形骨骼模板。这个过程看起来效果非常好,它从以前的位置大大加快了我的网站,并且用户界面非常棒。

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