Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[vue] vue中怎么重置data? #544

Open
haizhilin2013 opened this issue Jul 2, 2019 · 27 comments
Open

[vue] vue中怎么重置data? #544

haizhilin2013 opened this issue Jul 2, 2019 · 27 comments
Labels
vue vue

Comments

@haizhilin2013
Copy link
Collaborator

[vue] vue中怎么重置data?

@haizhilin2013 haizhilin2013 added the vue vue label Jul 2, 2019
@jialudev
Copy link

jialudev commented Jul 3, 2019

只有问题没有答案吗

@haizhilin2013
Copy link
Collaborator Author

@Mary5haw 目前还没有人回答,你来回答下呗

@Aaron0525
Copy link

使用Object.assign(),vm.$data可以获取当前状态下的data,vm.$options.data可以获取到组件初始化状态下的data,具体可以看vm.$options

@ChasLui
Copy link

ChasLui commented Jul 6, 2019

Object.assign(this.$data, this.$options.data())

@boss1000
Copy link

boss1000 commented Aug 15, 2019

Object.assign()方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象
this.$data获取当前状态下的data
this.$options.data()获取该组件初始状态下的data。
bject.assign(this.$data, this.$options.data())

@zhangxiaos
Copy link

初始状态下设置data数据的默认值,重置时直接bject.assign(this.$data, this.$options.data())

说明:
this.$data获取当前状态下的data
this.$options.data()获取该组件初始状态下的data(即初始默认值)
如果只想修改data的某个属性值,可以this[属性名] = this.$options.data()[属性名],如this.message = this.$options.data().message

@InterfaceBoy
Copy link

Object.assign(this.$data, this.$options.data())

浅拷贝会影响到初始化的data吗?

@coldtherain
Copy link

想问一句,这个使用场景在哪里?真的没碰见过需要重置的情况

@censek
Copy link

censek commented Oct 11, 2019

想问一句,这个使用场景在哪里?真的没碰见过需要重置的情况

比如,有一个表单,表单提交成功后,希望组件恢复到初始状态,重置data数据。

@nannan0109
Copy link

@censek 重置的意思 是使数据恢复成操作之前吗 不是置空是吗?

@wush12
Copy link

wush12 commented Nov 6, 2019

1.使用Object.assign,可以重新绑定data的响应式。
2.使用$set
3.组件强制更新

@DanielLeefu
Copy link

我们可以通过this.$data获取当前状态下的data,通过this.$options.data()获取该组件初始状态下的data。
然后只要使用Object.assign(this.$data, this.$options.data())就可以将当前状态的data重置为初始状态

@czkm
Copy link

czkm commented Mar 1, 2020

比如,有一个表单,表单提交成功后,希望组件恢复到初始状态,重置data数据。

为啥不写个方法 this.data.form = {}? 说实话没太懂重置data的意义 ,能请教一下吗

@censek
Copy link

censek commented Mar 2, 2020

@censek 重置的意思 是使数据恢复成操作之前吗 不是置空是吗?

可以设置表单的默认值。

@yuanqi3131
Copy link

使用 Object.assign(this.$data,this.$options.data.call(this)) 这样写才有用

@micahgao
Copy link

  1. 逐个赋值
  2. 使用 Object.assign(this.data, this.$options.data())
  3. 重置 data 中某个对象或属性:this.params = this.$options.data().params

@vnues
Copy link

vnues commented Aug 28, 2020

Object.assign(this.$data, this.$options.data())
挺好的 可以重置回初始值 优雅写法

@SanChauncy
Copy link

浅拷贝

@czkm
Copy link

czkm commented Aug 31, 2020

比如,有一个表单,表单提交成功后,希望组件恢复到初始状态,重置data数据。

为啥不写个方法 this.data.form = {}? 说实话没太懂重置data的意义 ,能请教一下吗

这是我工作中用到的 this.formList = this.$options.data.call(this).formList

@qq-radio
Copy link

想问一句,这个使用场景在哪里?真的没碰见过需要重置的情况

懒加载

@qq-radio
Copy link

1. 逐个赋值

2. 使用 Object.assign(this.data, this.$options.data())

3. 重置 data 中某个对象或属性:this.params = this.$options.data().params

在加个this.$set()齐了

@crush2020
Copy link

没用过,用作记录

Object.assign(this.$data, this.$options.data())方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象
this.$data获取当前状态下的data
this.$options.data()获取该组件初始状态下的data(即初始默认值)
如果只想修改data的某个属性值,可以this[属性名] = this.$options.data()[属性名],如this.message = this.$options.data().message

@crush2020
Copy link

@czkm

比如,有一个表单,表单提交成功后,希望组件恢复到初始状态,重置data数据。

为啥不写个方法 this.data.form = {}? 说实话没太懂重置data的意义 ,能请教一下吗

我就是这样重置表单的数据的

@MakeBetterMe
Copy link

@censek 重置的意思 是使数据恢复成操作之前吗 不是置空是吗?

聪明

@hyj443
Copy link

hyj443 commented Oct 27, 2021

mark 学到了
Object.assign 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象
this.$data 获取当前状态下的data
this.$options.data()获取该组件初始状态下的data
Oject.assign(this.$data, this.$options.data())

@yang-xianzhu
Copy link

this.$options.data(),返回的就是data的初始值。

@AAA611
Copy link

AAA611 commented Aug 30, 2022

重新执行组件的 data 函数,这个函数可以在vm.$options中找到

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
vue vue
Projects
None yet
Development

No branches or pull requests