如何阻止条件渲染闪烁?

时间:2017-08-04 18:29:35

标签: meteor rendering meteor-blaze

我不确定这是Meteor问题还是通用问题,但我的应用程序中有以下代码。

<template name='admin'>
<div class='admin container-fluid noPadding'>
    {{#if isInRole 'Admin'}}
        <h3 class="homepageText">Server Statistics</h3>
        {{> serverFacts}}
    {{else}}
        You don't belong here!
    {{/if}}
</div>

当页面呈现时,我看到&#34;你不属于这里!&#34;,然后&#34;服务器统计&#34;大约一秒左右取代它。我在我的应用程序中的其他地方总是遇到与Blaze {{#if ...}}相关的问题。有没有办法阻止页面在浏览器中显示,直到渲染完成并安定下来?

1 个答案:

答案 0 :(得分:1)

这是被动应用程序的一般问题 - 渲染经常在数据仍被推送到客户端时发生。通常的解决方案是使用微调器(例如:Polymer 1 demo),直到基础订阅准备就绪。然后在Blaze你最终得到:

<template name='admin'>
{{#if loading}}
  {{> spin}}
{{else}}
  <div class='admin container-fluid noPadding'>
    {{#if isInRole 'Admin'}}
      <h3 class="homepageText">Server Statistics</h3>
      {{> serverFacts}}
    {{else}}
      You don't belong here!
  {{/if}}
{{/if}}
</div>

根据您的订阅,您需要帮助程序来计算loading。在由多个订阅支持的更复杂的布局中,您最终可能会有多个旋转器旋转。