【问题标题】:Initializers in React.js?React.js 中的初始化器?
【发布时间】:2015-05-01 17:38:33
【问题描述】:

我在带有react-railsbrowserify-railsrails 4.2.1 应用程序中使用react 0.13.1。我不是在做单页应用程序,而是在渲染页面上添加react 组件并使用rails 路由系统。

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

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

注意:假设只使用react 和普通javascript

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

【问题讨论】:

    标签: javascript ruby-on-rails reactjs


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回答,但这并不是我真正想要的。我编辑了我的问题,希望它能澄清我的问题。
    • 我回答了在 React 启动之前如何进行初始化以及组件初始化。就像我说的,在调用 React.render() 之前在页面加载时执行此操作。
    【解决方案2】:

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

    我有一个与 Django 类似的设置,我使用 Django 是因为它的优势。路由、会话、身份验证、Rest API 等......并让 Django 呈现一个加载 React UI 的条形骨骼模板。这个过程似乎非常有效,它大大加快了我的网站速度,而且用户界面也很棒。

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

    【讨论】:

    • 感谢您的回答,但这并不是我真正想要的。我编辑了我的问题,希望它能澄清我的问题。
    • 好的,没问题,我用新段落更新了我的答案,我认为这解决了你的问题。
    猜你喜欢
    • 2016-06-14
    • 2015-01-31
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 2015-09-25
    • 2020-03-05
    • 2014-08-21
    • 2010-09-14
    相关资源
    最近更新 更多