Vue.js 需要与计算属性相同的功能,但我需要能够在初始更改后更新数据

Vue.js 需要与计算属性相同的功能,但我需要能够在初始更改后更新数据,vue.js,vuejs2,vuex,Vue.js,Vuejs2,Vuex,在这种情况下,当数据检测到状态变化时,我需要更新数据。用户需要能够在文本区域内进一步更改此信息。使用computed properties完全按照我想要的方式拉入数据,但是用户在此之后所做的任何更改都会被覆盖,因为computed property会不断将此数据更改回其初始值。最初在状态更改时拉入数据,但随后允许在此之后进行编辑的最佳方式是什么 谢谢 编辑:更新到我为@Libby所做的尝试 <textarea v-model="exampleData"></textarea&g

在这种情况下,当数据检测到状态变化时,我需要更新数据。用户需要能够在文本区域内进一步更改此信息。使用computed properties完全按照我想要的方式拉入数据,但是用户在此之后所做的任何更改都会被覆盖,因为computed property会不断将此数据更改回其初始值。最初在状态更改时拉入数据,但随后允许在此之后进行编辑的最佳方式是什么

谢谢

编辑:更新到我为@Libby所做的尝试

<textarea v-model="exampleData"></textarea>

computed: {
        ...mapGetters({
            item: 'item'
        })

methods: {
    exampleFunction() {
       this.exampleData = this.item;
}

mounted() {
    this.exampleFunction();
}

计算:{
…地图绘制者({
项目:“项目”
})
方法:{
示例函数(){
this.exampleData=this.item;
}
安装的(){
这个.exampleFunction();
}

如果在
数据中设置属性,则可以在
挂载的
中初始化属性,该属性在加载页面时仅运行一次:

data:
   text: null
mounted: ->
   text = "This text is initialized"
然后在文本区域设置
v-model

<textarea v-model="text"></textarea>


因此,
textarea
的值将以“This text is initialized”(此文本已初始化)开始,但用户将能够更改它,并且这些更改将保存在
text
中。如果在
data
中设置属性,则可以在
mounted
中初始化它,该属性在加载页面时仅运行一次:

data:
   text: null
mounted: ->
   text = "This text is initialized"
然后在文本区域设置
v-model

<textarea v-model="text"></textarea>


因此,
textarea
的值将以“此文本已初始化”开始,但用户可以对其进行更改,并且这些更改将保存在
text

更新
exampleData
中的
项目的监视程序中:

watch: {
  item(value) {
    this.exampleData = value;
  }
}
通过这种方式,您可以将
示例数据
绑定到文本字段,但对
的更改仍然会影响它

如果您想将
exampleData
初始设置为
项的值
,请在组件的
挂载挂钩中执行此操作:

mounted() {
  this.exampleData = this.item;
}

更新
项目的观察者中的
示例数据

watch: {
  item(value) {
    this.exampleData = value;
  }
}
通过这种方式,您可以将
示例数据
绑定到文本字段,但对
的更改仍然会影响它

如果您想将
exampleData
初始设置为
项的值
,请在组件的
挂载挂钩中执行此操作:

mounted() {
  this.exampleData = this.item;
}

Vue已经有了一个内置的解决方案来处理这个问题,如果您使用getter/setter语法

因此,当您的状态更改时,您可以通过为计算机属性指定一个值来更新该属性:

// state has changed in text area handler
this.fullName = 'new value'

如果您将getter/setter语法用于

因此,当您的状态更改时,您可以通过为计算机属性指定一个值来更新该属性:

// state has changed in text area handler
this.fullName = 'new value'

我尝试过这个,但似乎挂载函数在组件“获取”之前运行挂载函数需要正确设置本地数据的状态对象,我做错了什么吗?有没有办法告诉它,让它等到正确的信息可用后再执行?挂载的
函数应该在对象在
数据
中声明后运行。你能显示你的代码吗?我更新了原始帖子to在尝试使用mounted时向您展示我的逻辑。这对我来说并没有起到我所认为的作用,computed将正确执行,但是我无法更改textarea中存储的数据(通过v-model)因为它总是会返回到计算属性返回的内容。我尝试了这个方法,但似乎挂载的函数在组件“获取”之前运行挂载函数需要正确设置本地数据的状态对象,我做错了什么吗?有没有办法告诉它,让它等到正确的信息可用后再执行?挂载的
函数应该在对象在
数据
中声明后运行。你能显示你的代码吗?我更新了原始帖子to在尝试使用mounted时向您展示我的逻辑。这对我来说并没有起到我所认为的作用,computed将正确执行,但是我无法更改textarea中存储的数据(通过v-model)由于它总是返回到计算属性返回的内容。这似乎工作正常,我必须研究文档以真正了解它在后台是如何工作的,但它似乎在查找对项的任何更改,然后运行一次函数,之后所做的任何更改都不会重新运行,因为项是taying一样。谢谢你的帮助。我最初的观察程序运行良好,我在一个单独的组件中设置了另一个观察程序,观察一个单独的数据点,但第二个没有触发,在多个组件中使用多个观察程序有什么诀窍吗?这似乎工作正常,我必须研究文档才能真正理解这是如何工作的ks在引擎盖下,它似乎在寻找对项目的任何更改,然后运行一次函数,然后由于项目保持不变而不重新运行之后所做的任何更改。感谢您的帮助。我的初始监视程序工作正常,我在一个单独的组件中设置了另一个监视单独的数据点,但第二个没有装配,在多个组件中使用多个观察者有什么诀窍吗?