在uni-app项目中,二次封装uview的toast组件,传入文本描述和规则
时间: 2024-03-05 14:52:17 浏览: 140
在`my-toast.vue`中,可以通过props接收外部传入的文本描述和规则,如下所示:
```vue
<template>
<u-toast v-model="visible" :position="position" :type="type">{{ message }}</u-toast>
</template>
<script>
export default {
props: {
message: {
type: String,
default: ''
},
position: {
type: String,
default: 'middle'
},
type: {
type: String,
default: 'text'
}
},
data() {
return {
visible: false
}
},
watch: {
message() {
if (this.message) {
this.show()
}
}
},
methods: {
show() {
this.visible = true
setTimeout(() => {
this.visible = false
}, 2000)
}
}
}
</script>
```
在上述代码中,我们通过props接收文本描述`message`、位置`position`和类型`type`三个参数,并在模板中使用uview的toast组件来展示toast。在`show`方法中,我们通过设置`visible`属性来控制toast的显示和隐藏,并通过`setTimeout`函数来控制toast的显示时长。
使用该组件时,我们只需要在需要使用的页面中引入该组件,并传入相应的参数即可,如下所示:
```vue
<template>
<div>
<button @click="showToast">展示toast</button>
<my-toast :message="message" :position="position" :type="type"></my-toast>
</div>
</template>
<script>
import MyToast from '@/components/my-toast'
export default {
components: {
MyToast
},
data() {
return {
message: 'Hello, world!',
position: 'middle',
type: 'text'
}
},
methods: {
showToast() {
this.$refs.myToast.show()
}
}
}
</script>
```
在上述代码中,我们通过`import`语句引入了`my-toast`组件,然后在模板中使用该组件,并通过`:message`、`:position`和`:type`属性传入相应的参数。在`showToast`方法中,我们通过`$refs`引用了该组件,并调用了`show`方法来展示toast。
阅读全文