vue子传父,一直报错,我是把this.$emit('写在父级里的自定义事件名字',需要传递的数据),写在了子组件的生命周期created里面的,但是一直提示报错请看下面的报错截图,我搜了下说是需要传递的是字符串,但是我传递的是一个数组。我很肯定我传的确实是字符串,是在发请求拿到大对象里面在点的属性拿到的数据,为什么会提示我传递的是数组尼?我单独写了一个点击事件测试了下传递数据居然是可以成功传的,这是为什么?不支持写在created里面吗?不应该吧。
<!-- 父组件 -->
<template>
<div class="header">
<van-search
v-model="SearchValue"
@search='EnterSearch'
:placeholder="placeholderValue"
>
</van-search>
<HistoryHot @myEvent="handleEvent"></HistoryHot>
</div>
</template>
<script>
import HistoryHot from '@/components/HistoryHot';
export default {
data() {
return {
SearchValue: "",
placeholderValue: "",
};
},
components:{
HistoryHot
},
methods: {
// 接受来自子组件的数据
handleEvent(event){
this.placeholderValue=event
}
},
};
</script>
<!-- 子组件 -->
created(){
<!-- 写在生命周期就会报错。也就是我文中所说的问题 -->
this.$emit("myEvent",this.defaultKeyword)
},
methods: {
gethome(){
<!-- 这是我目前解决的办法 -->
this.$emit("myEvent",this.defaultKeyword)
}
},
你的gethome方法里应该是先发送了ajax请求再调emit的吧,而且我猜你现在的emit其实是写在ajax请求的回调里的,比如
当你在写在生命周期里的时候
补充一下子组件的代码的执行顺序吧:
然后,如果你非要吧emit写在created里面的话,也不是不行:
然后还有 async、await的写法我就不列举了。