使用 v-if 在 Vue 中进行条件渲染

发布于 2022-08-10 12:27:54 字数 2527 浏览 100 评论 0

v-if 指令 允许您有条件地渲染一个块。 它不同于 v-show 在那里面 v-if 如果其表达式的计算结果为 false

const app = new Vue({
  data: () => ({ render: false }),
  template: `
    <div>
      <h1 v-if="render">Hello, World</h1>
    </div>
  `
});

// Vue will **not** render 'Hello, World' because the `v-if`
// expression evaluates to false.
const data = await renderToString(app);
// <div data-server-rendered="true"><!----></div>
data;

v-else-ifv-else

Vue 也有 v-else-ifv-else 指令 行为类似的 else ifelse 在 JavaScript 中。

const app = new Vue({
  data: () => ({ value: 1 }),
  template: `
    <div>
      <div v-if="value > 0">Positive</div>
      <div v-else-if="value < 0">Negative</div>
      <div v-else>Zero</div>
    </div>
  `
});

let data = await renderToString(app);
// <div data-server-rendered="true"><div>Positive</div></div>
data;

app._data.value = -1;
data = await renderToString(app);
// <div data-server-rendered="true"><div>Negative</div></div>
data;

app._data.value = 0;
data = await renderToString(app);
// <div data-server-rendered="true"><div>Zero</div></div>
data;

生命周期挂钩

Vue 组件有生命周期钩子 ,比如 created 创建组件时调用的钩子,以及 mounted 当组件被安装时。

当 Vue 渲染一个组件时,因为 v-if 表达变成了 true,它触发了 created 和 mounted 的钩子。 例如, 下面的代码将打印两个 created 和 mounted,每次 display 更改为 truefalse

Vue.component('test', {
  created: function() {
    console.log('Created!');
  },
  mounted: function() {
    console.log('Mounted!');
  },
  template: '<h1>Hello World</h1>'
});

const app = new Vue({
  data: () => ({ display: false }),
  template: `
    <div>
      <test v-if="display"></test>
      <div>
        <button v-on:click="display = !display">Toggle</button>
      </div>
    </div>
  `
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

絕版丫頭

暂无简介

0 文章
0 评论
21 人气
更多

推荐作者

亽野灬性zι浪

文章 0 评论 0

少年亿悲伤

文章 0 评论 0

南七夏

文章 0 评论 0

qq_EJoXxu

文章 0 评论 0

17780639550

文章 0 评论 0

萌逼全场

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文