javascript - 如何使用组件中的方法更改 vue 中 props 的值?
问题描述
我正在练习 vuejs 在组件之间传输数据,这是我的代码
我的刀片模板:
`<app-user-details :name="name"></app-user-details>`
然后在我的子组件中:
<template>
<div>
<h4>You may view the user details here</h4>
<p>Many Details</p>
<p>User name: {{ name }}</p>
<button @click="resetName">reset name</button>
</div>
</template>
<script>
export default {
name: 'app-user-datails',
props: {
name: {
type: String
}
},
methods: {
resetName() {
return this.name = 'Max'
}
}
}
</script>
我想通过方法 resetName() 更改道具中的名称,但在控制台中我收到此错误
vue.js:1355 未捕获的类型错误:代理上的“设置”:陷阱为属性“名称”返回错误
我应该怎么办?!
解决方案
您不应该尝试从文档更新子组件内部的道具:
所有的 props 在子属性和父属性之间形成一个单向向下的绑定:当父属性更新时,它会向下流向子属性,但不会反过来。这可以防止子组件意外改变父组件的状态,从而使您的应用程序的数据流更难理解。
但是,您可以从子组件发出具有新名称的事件:
resetName() {
this.$emit('updateName', 'Max')
}
并通过监听事件从父级更新它:
<app-user-details :name="name" @updateName="name = $event"></app-user-details>
推荐阅读
- swift - var a = 5 和 var a = Int(5) 有什么区别?
- python - 当我从我的数据库中提取主键时,它们会出现在括号中,我以后无法在我的代码中使用它们
- android - 如何使用设备场为 BOOT_COMPLETED 和 USER_PRESENT 接收器创建自动化测试?
- python - Colab教程使用object_detection进行迁移学习,为什么lookup_ops.py中出现TypeError?
- ansible - 获取ansible mongo模块的IP
- java - 使用类路径外的配置文件创建 CacheManager bean
- bash - 使用 wget 命令下载目录
- excel - 为什么编译器会抛出错误类型不匹配
- android - MVVM - 使用 LiveData 的自定义选项卡布局控件
- excel - 大范围的分离细胞