Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript VueJs方法正在直接更改响应_Javascript_Vue.js_Methods_Response_Mount - Fatal编程技术网

Javascript VueJs方法正在直接更改响应

Javascript VueJs方法正在直接更改响应,javascript,vue.js,methods,response,mount,Javascript,Vue.js,Methods,Response,Mount,我有一个父组件,我正在那里对后端进行查询,然后在导航栏的帮助下,通过单击父组件中的activeView数据,我呈现一个新的子页面,并在vue中的v-if的帮助下从我的响应中传递一个道具。但是该方法的一个功能是改变父组件中的我的道具,也改变我的响应。这怎么可能呢。 这是安装我的子组件之前的步骤: beforeMount() { console.log(this.plansPropOrg); this.plansProp = this.plansPropOrg; this.t

我有一个父组件,我正在那里对后端进行查询,然后在导航栏的帮助下,通过单击父组件中的activeView数据,我呈现一个新的子页面,并在vue中的v-if的帮助下从我的响应中传递一个道具。但是该方法的一个功能是改变父组件中的我的道具,也改变我的响应。这怎么可能呢。 这是安装我的子组件之前的步骤:

beforeMount() {
    console.log(this.plansPropOrg);
    this.plansProp = this.plansPropOrg;
    this.tempPlan = this.plansProp.currentPlan;

    console.log(this.plansProp);
    this.propsToData();
}
有问题的函数是propsToData,当ı在这里注释时,这是正常的,但ı必须调用它

这是我的父母在提出问题时的回答:

await axios.post("xxxxx/yyyyyyy").then(res => {
                console.log("heyyo");
                console.log(res);
                this.plansData = res.data.data;
                console.log(this.plansData);
            });
这是数据的诀窍,它只是把布尔值翻译成英语。但在回答中,(如果这是真的)ı将值视为翻译

propsToData() {
        //TODO: Burdaki if' ifsubscriber olarak değişecel
        console.log("AAA");
        console.log(this.plansProp);
        if (this.plansProp.isSubscriber) {
            console.log("BBBBB");
            this.plansProp.currentPlan.analytics
                ? (this.plansProp.currentPlan.analytics = this.$t(
                      "settings.plans.active"
                  ))
                : (this.plansProp.currentPlan.analytics = this.$t(
                      "settings.plans.inactive"
                  ));
         }
   }

这怎么可能?它怎么可能更改响应?

您正在通过引用复制响应和
plansProp
对象,这意味着两个对象都指向内存中的同一位置。当您更改其中一个对象时,另一个仍然指向内存中的相同位置,这意味着当您检索它时,它将是相同的对象

您需要执行浅层()或深层(
JSON.parse(JSON.stringify())
)复制,具体取决于对象的结构


这里有更多信息。

propsToData()中有什么,你能从该函数中添加代码吗?解决方案是可行的,但ı仍然不理解:即使在这种情况下,my console.log函数显示了由propsToData()函数编辑的数据。例如console.log(res);这里的数据都是经过编辑的数据。你应该花点时间研究一下计算机科学中的价值观和参考文献,以及它们的含义。是javascript中这些想法的良好起点。在js中执行
时,让newObj=oldObj
就是所谓的引用复制,这意味着两个对象都是对同一个内存位置的引用,其中一个对象位于同一个内存位置。因此,当你改变其中一个对象时,你改变了两个对象,因为它们指向同一个对象。