当前位置: 首页 > 知识库问答 >
问题:

Vue JS-组分中的反应性含量

傅翰池
2023-03-14

我正在尝试显示组件的数据,基于属性是真还是假以保持所有的反应性。为此,我首先创建了一个对象数组'Premium content',每个对象都表示要在组件中显示的内容类型。无论“高级激活”是否为真,这些对象中的一个都应该是可见的。有人能帮我找到一个解决方案来实现这一点吗?我对此还很陌生,所以在语法方面,我往往会把事情弄混。

MyComponent:

<template>
  <div>
    <div class="background-div">
      <div class="page-info-inner">
          <PremiumContent v-for="item in premiumContent"
                          :key="item.infoText" 
                          :info-text="item.infoText" 
                          :button-text="item.buttonText"
                          :button-callback="null"
                          :subscription-text="item.subscriptionText"
                          :is-visible="item.isVisible" />
      </div>
    </div>
  </div>
</template>

<script>
  import PremiumContent from '../../../components/partials/settings/Premium';
  
  export default {
    name: 'MyComponent',
    components: {PremiumContent},
    data: () => ({
      premiumActivated: false,
      
      premiumContent: [
        {
          infoText: "this is the content that should appear if premiumActivated is false",
          buttonText: "button text",
          // isVisible: 'if premium activated === false > show this object'
        },
        {
          infoText: "this is the content that should appear if premiumActivated is true",
          buttonText: "button text",
          subscriptionText: 'extra text',
          // isVisible: 'if premium activated === true > show this object'
        },
      ]
    }),

共有2个答案

邢鸿博
2023-03-14

可以使用computed属性,该属性通过isvisible条件筛选数组。

export default {
    //...
    data() {
        return {
            premiumContent: [ /** ... your data here */]
        }
    },
    computed: {
        premiumContentFiltered() {
            return this.premiumContent.filter(pc => pc.isVisible);
        }
    }
    //... rest of your code
}
<PremiumContent v-for="(item, i) in premiumContentFiltered" 
                :key="`premium-content-${i}`"
                :item="item"
                :button-callback="null" />

备注:

  • item.infotext是一个最终不能唯一的字符串,因此我使用了:key=“premium-content-${i}”作为唯一键。
  • :item=item:也许共享整个对象更好,而不是单独共享每个属性,以保持道具更干净
洪梓
2023-03-14

使用v-showv-ifitem.isvisible

v-show将呈现该元素,但将其保持隐藏,而v-if将不会呈现它,直到isVisible为true。

 类似资料:
  • 在下面的 VueJS 2 组件中,我可以将 imgdata 属性添加到 area.questions 数组中的每个问题。它的工作原理 - 我可以从控制台中看到.log存在imgdata具有值的问题。但是,尽管使用了$set它仍然没有反应,并且imgdata不在视图中!我怎样才能使它被动?

  • 根据文档: 或者在某些特定情况下,当只需要使用Mono而Flux无法处理操作时?请建议。

  • 问题内容: 我需要动态加载React组件。 我从用户获取要加载为字符串的组件名称。我正在使用 webpack 。 如何动态加载组件,而不要使用静态import语句。似乎不评估表达式。我想要实现的是这样的事情。 但这似乎不起作用。 问题答案: 基本上,它可以归结为预先创建您将需要的所有块。然后,您只需要一种动态引用它们的方法。这是我基于的解决方案: http://henleyedition.com/

  • 在带有TypeScript和Vuetify应用程序的VueJS中,我有十张图片,分别是picture1.png、picture2.png、picture3.png等。我正在尝试制作

  • 问题内容: 有没有办法将一个组件传递到另一个React组件?我想创建一个模型react组件,并传入另一个react组件以包含该内容。 编辑:这是一个reactJS codepen,说明了我正在尝试做的事情。http://codepen.io/aallbrig/pen/bEhjo 的HTML ReactJS 问题答案: 您可以用来渲染组件包含的任何子代:

  • 问题内容: 我想在下面学习给定语句的时间复杂度。(在Java8中) 任何想法? 问题答案: 由于时间复杂度取决于所有操作,因此没有通用的答案。由于必须完全处理流,因此必须将其基本时间复杂度乘以每个元素完成的所有操作的成本。假设迭代成本本身并不比差,大多数流源就是这种情况。 因此,假设没有影响时间复杂度的中间操作,则必须评估每个元素的功能,该功能应独立于其他元素,因此不影响时间复杂度(无论它有多昂贵