在页面加载前检查用户电子邮件状态

Check user email status before page loads

我正在使用 unless spacebar 功能来检查用户是否已经验证了他们的电子邮件地址。在生产中,我假设由于延迟,屏幕会显示此通知,然后如果电子邮件已通过验证,则会在一秒钟后发生变化。有没有办法减慢页面加载速度,以便在页面加载之前检查用户的电子邮件状态?

<template name="mainLayout">

        {{#unless currentUser.emails.[0].verified}}
            <p class="alert alert-warning text-center">We have sent you an email to verify your email address. All users must confirm their email address to access the BHR platform.</p>

        {{else}}

        <div id="content" class="content">
            <div class="container">
                {{>Template.dynamic template=main}}     
            </div>      
        </div>

        {{/unless}}

    </div>

</template>

延迟是因为第一次呈现模板时 Meteor.user() 对象尚未完全加载。然后它加载并反应性地交换部分。

您需要在加载用户对象时显示加载 screen/spinner。如何执行此操作取决于您使用的路由器。

我相信这就是 Michael 的建议。将您的模板包装在:

{{#if Template.subscriptionsReady}}

{{/if}}