vue中switch使用,vue switch开关

  vue中switch使用,vue switch开关

  本文主要介绍vue3中开关功能组件的简单实现的相关信息。通过示例代码进行了非常详细的介绍,对大家的学习或工作有一定的参考价值。下面就让我们和边肖一起学习吧。

  

what

  在编程语言中,除了使用if语句进行条件判断外,另一个常用的就是switch。

  在vue,官方已经帮助我们实现了v-if指令,但是还没有切换。那么我们自己能实现一个吗?

  本文就是要探讨这个问题,并最终实现一个Switch组件。

  

以终为始

  让我们来看看我们希望用户如何使用Switch。

  和js比较一下:

  用户可以通过VSwitch组件应用开关功能。

  根据案例确定匹配条件。

  然后用模板表示每个事例匹配条件。

  这样我们就规定了用户应该如何使用,剩下的其实就是实现了。

  这个步骤背后的想法是确定组件的规范,或者组件的接口。

  

how

  那么应该如何实现呢?

  我们先想想switch的功能。

  拆分 Switch 功能

  将显示一个等于case值的模板,不应显示任何其他内容。

  举个栗子:

  当case=小红

  那么只能显示名为‘小红’的槽。

  如果没有与任何大小写匹配的,并且有一个默认插槽,将显示默认插槽。

  当然,switch还有更复杂的功能。这里先从核心函数开始,逐渐复杂(迭代思维)。

  实现原理

  首先要知道这个组件的插槽,分别是什么?

  在vue3中,我们可以通过以下方式轻松获得插槽

  设置(道具,{插槽}){

  console.log(插槽)

  }

  如果打印插槽,你会发现你可以得到一个对象,key的值是插槽的名称,而value是一个函数。调用这个函数来获取相应的vnode。

  比如我要给小黑看这个槽,我该怎么做?

  这就够了。

  设置(道具,{插槽}) {

  return ()={

  return slots .小黑()

  };

  },

  Setup不仅可以将对象作为导出到模板的数据返回,还可以直接将函数作为render返回。

  只要render函数返回对应的vnode,最终都会渲染到视图中。

  所以根据上面的代码,最终会显示小黑槽里面的内容。

  了解以上知识点后,我们再回来看看第一个函数。

  是不是只要我们渲染出符合案例的槽位就可以了?

  看看代码:

  导出默认值{

  道具:[case],

  设置(道具,{插槽}) {

  console.log(插槽);

  return ()={

  if (slots[props.case]) {

  返回slots[props . case]();

  }

  };

  },

  };

  哦,一定要加上条件判断,因为很可能没有对应的槽。

  看,明白原理后,第一个功能是不是很容易实现?

  我们看第二个函数,是不是也很简单?

  只需添加一段代码:

  导出默认值{

  道具:[case],

  设置(道具,{插槽}) {

  console.log(插槽);

  return ()={

  if (slots[props.case]) {

  返回slots[props . case]();

  }

  if (slots[default]) {

  返回插槽[ default ]();

  }

  };

  },

  };

  如果第一个条件没有匹配,那么肯定会达到第二个条件判断,也就是if (slots[default])。

  然后,如果有默认槽,就直接回去。

  到目前为止,您已经实现了一个简单的开关功能组件。

  

总结

  让我们总结一下你学到了什么。

  当设计一个组件时,首先要设计它的规则(接口)。

  Tasking的思路是分解大的功能,然后一个一个的分解。

  在vue3中获取插槽的方法

  Setup不仅可以返回一个对象,还可以返回一个函数,和render函数的效果一样。

  render函数返回的vnode最终会呈现在视图上。

  如果学会了,请用小手给个赞~ ~ ~

  

完整代码

  //VSwitch.vue

  脚本

  导出默认值{

  道具:[case],

  设置(道具,{插槽}) {

  return ()={

  if (slots[props.case]) {

  返回slots[props . case]();

  }

  if (slots[default]) {

  返回插槽[ default ]();

  }

  };

  },

  };

  /脚本

  

扩展思考

  实际上,这里实现的开关功能并不完整。用户匹配满足多个条件怎么办?而且没有断行,那么要不要显示所有匹配的模板?

  自己试着体会一下?

  关于vue3中开关功能组件的简单实现的文章到此结束。关于vue3中开关功能组件实现的更多信息,请搜索我们之前的文章或者继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: