.vue文件怎么使用_使用Vue 自定义文件选择器组件(基础虽简单,但思路我们要掌握)...

文件选择元素是web上最难看的 input 类型之一。它们在每个浏览器中实现的方式不同,而且通常非常难看。这里有一个解决办法,就是把它封装成一个组件。

安装

如果你尚未设置项目,可以使用vue-cliwebpack-simple模板启动一个新项目。

$ npm install -g vue-cli
$ vue init webpack-simple ./file-upload # Follow the prompts.
$ cd ./file-upload
$ npm install # or yarn

组件模板和样式

该组件主要做的就是将input type=”file”元素包装在标签中,并在其中显示其他内容,这种思路虽然简单,但却很实用。

// FileSelect.vue

<label class="file-select"><div class="select-button"><span v-if="value">Selected File: {{value.name}}span><span v-else>Select Filespan>div><input type="file" @change="handleFileChange"/>label>template>

现在来加一些样式美化一下:

// FileSelect.vue
...
<style scoped>.file-select > .select-button {padding: 1rem;color: white;background-color: #2EA169;border-radius: .3rem;text-align: center;font-weight: bold;
}/* Don't forget to hide the original file input! */.file-select > input[type="file"] {display: none;
}style>

封装逻辑

对于浏览器来说,file是一种非常特殊的类型,所以有一些特殊的规则使它们有时很难处理。(更多信息请点击这里)。因此,我们可以借助 v-model来封装,让该组件像普通表单元素一样。我们知道 v

我们知道, Vue 是单项数据流,v-model 只是语法糖而已,如下所示:

"sth" />
// 上面等价于下面
value="sth" v-on:input="sth = $event.target.value" />

知道了 v-model 的原理,我们来实现一下 FileSelect 组件的逻辑:

// FileSelect.vue ¨K4K ¨G2G // App.vue ¨K3K ¨K5K

总结

虽然该事例很简单也很基础,但我们可以在这之上完善更强大的功能,在开发中,单向数据流虽然简单且易读,但在一些实际的开发中,Vue 的自定义组件,使用双向绑定也就是 v-model 的方式,会更加灵活实用,
我们需要了解及掌握这种思路,希望对大家有所帮助。

下节会在公众号发布对应的视频教程,敬请关注。


作者:Joshua Bemenderfer 译者:前端小智 来源:codepen
原文:https://bootstrap-vue.js.org/docs/components/form-file/


交流

b937ea7a75a6f55a7aa8ef3f57a53c23.png

Vue 中的 Props 与 Data 细微差别,你知道吗?

【小智视频讲解】Vue 中 render 函数需要知道的几点

Vue  中 render 函数有点意思

何时使用 Map 来代替普通的 JS 对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值