我正在使用ionic with vue开发一个应用程序。我制作了一个自定义按钮,并希望包含在另一个组件中。我试图为按钮分配一个功能,但似乎不起作用。我得到的错误是:
[Vue警告]:无效的属性:属性“onClick”的类型检查失败。预期为函数,但得到值为“addTodo”的字符串。
第一次使用vue。提前感谢。
按钮组件
<template>
<ion-footer>
<ion-button fill="outline" expand="block" color="primary" @click="onClick">
<ion-ripple-effect></ion-ripple-effect>
{{text}}
</ion-button>
</ion-footer>
</template>
<script>
export default {
props: {
onClick:Function,
text:String,
}
}
</script>
其他组件
<template>
<ion-row>
<ion-col>
<main-btn text="Add Activity" onClick="addTodo"></main-btn>
</ion-col>
</ion-row>
</ion-grid>
</template>
<script>
import axios from 'axios';
export default {
data() {
return {
todos: []
}
},
methods: {
addTodo() {
this.$router.push({path: '/todos/add'})
}
},
created() {
axios.get('http://localhost:3001/todos')
.then(res => this.todos = res.data)
}
}
</script>
2条答案
按热度按时间enxuqcxy1#
只要把它修改一下,你不需要把函数作为一个 prop 传递。
在按钮组件中:
在“另一个组件”中
只需将click事件从子组件冒泡即可。
xfb7svmp2#
您的做法与Vue的工作方式背道而驰。您总是希望向下传递Props,其中包含子组件所需的数据,并向上向父组件发出事件以处理必要的函数调用。
您的子组件“main-btn”应更像下面这样
这将允许任何父组件查找由子组件发出的onClick事件,并做出相应的React。在您的情况下,父组件只需要稍作更改。
父组件正在查找onClick事件,并通过调用其addTodo函数做出相应的React
https://v2.vuejs.org/v2/guide/components.html#Listening-to-Child-Components-Events