VUE动态修改或添加属性值---this.$set()

VUE 动态修改data 中数据或添加属性值

vue 中data 数据更新后页面不同步动态渲染更新

vue官方文档说明

  1. 为对象添加属性或修改指定属性
var student= {
   name: '李明'
};
this.$set(student, 'name', '陈明');//修改name属性值
this.$set(student, 'sex', '男');//追加age属性并赋值
console.log(student); //{name: '陈明', 'sex': '男'}
  1. 为数组添加属性或修改数组值
//修改数组值
var arr = [1, 2, 3];
//this.$set(要修改的数组,数组下标,要修改/添加的值)
this.$set(arr, 3, 4);	//添加数组值
console.log(arr);//[1, 2, 3,4]

this.$set(arr, 0, 4);//修改数组值
console.log(arr);//[4, 2, 3]
  1. 修改数组对象属性值(vue 2)
data(){
	materialList:[
	{
	  materialId: "19580",
	  deptMatterId: "350",
	  applicationMaterialId: "7505",
	  name: "身份证",
	  checkMain: "",
	  type: "办理材料",
	  delFlag: "0",
	  old: true,
	  examples: [],
	  styles: [],
	  fileList: []
	 },
	],
}
//为fileList中添加值
//starIndex:materialList下标
this.$set(
	this.materialList,strIndex,
	{...this.materialList[strIndex],
		fileList:[{name:'文件名',url:'http://123456.com'}]
	}
)
//添加后结果
materialList:[
	{
	  materialId: "19580",
	  deptMatterId: "350",
	  applicationMaterialId: "7505",
	  name: "身份证",
	  checkMain: "",
	  type: "办理材料",
	  delFlag: "0",
	  old: true,
	  examples: [],
	  styles: [],
	  fileList: [
	  {name:'文件名',url:'http://123456.com'}
	  ]
	 },
	],
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在Vue3中,可以使用`setup`函数来编写组件的逻辑,在`setup`函数内部可以通过`context`参数来访问组件的属性和方法。`context`参数是一个包含了`props`、`attrs`、`slots`等属性的对象。 对于在`setup`函数中动态添加属性Vue3不再使用`this.$set`来实现,而是通过返回一个响应式的对象来实现属性动态添加。下面是一个示例代码: ```javascript import { ref, reactive, computed } from 'vue'; const MyComponent = { setup() { // 使用ref创建一个响应式的变量 const count = ref(0); // 使用reactive创建一个响应式的对象 const person = reactive({ name: 'John', age: 30, }); // 计算属性 const fullName = computed(() => { return person.name + ' Smith'; }); // 添加新的属性和方法 person.email = 'john@example.com'; const increment = () => { count.value += 1; }; // 返回需要在模板中使用的属性和方法 return { count, person, fullName, increment, }; } }; ``` 在上面的例子中,我们使用`ref`创建了一个响应式的变量`count`,使用`reactive`创建了一个响应式的对象`person`。然后,我们动态地给`person`对象添加了`email`属性,并定义了一个名为`increment`的方法。最后,我们通过`return`语句将这些属性和方法返回,在模板中可以直接访问和使用。 需要注意的是,在Vue3中不再需要使用`this`来访问组件的响应式属性和方法,而是直接通过返回来访问。这样做的好处是可以更清晰地知道属性和方法的来源。 ### 回答2: 在Vue3中使用`setup()`函数来编写组件时,动态添加属性可以通过`this.$set`方法实现。 `this.$set`方法用于向响应式对象添加属性或创建新的响应式对象。它接受三个参数,分别是要添加属性的对象、属性名和属性。 首先,我们需要在`setup()`函数中创建一个响应式对象。可以使用`reactive()`函数来创建一个响应式对象。例如: ```javascript import { reactive } from 'vue'; setup() { const data = reactive({ name: 'Vue', version: '3' }); } ``` 然后,我们可以使用`this.$set`方法来动态添加属性。例如: ```javascript import { reactive } from 'vue'; setup() { const data = reactive({ name: 'Vue', version: '3' }); // 使用this.$set动态添加属性 this.$set(data, 'author', 'Evan You'); } ``` 在上面的例子中,我们通过`this.$set(data, 'author', 'Evan You')`语句动态添加了一个名为`author`的属性属性为`'Evan You'`。 需要注意的是,`this.$set`方法只能在组件实例上使用,因此需要在`setup()`函数中使用`ref()`函数创建一个组件实例并将其返回。然后,在组件模板中使用组件实例来访问`this.$set`方法。 综上所述,以上是在Vue3中使用`setup()`函数动态添加属性时,可以使用`this.$set`方法实现的简单示例。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值