<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>组件 on 月盾的博客</title>
    <link>https://blog.hopefly.top/tags/%E7%BB%84%E4%BB%B6/</link>
    <description>Recent content in 组件 on 月盾的博客</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Sat, 01 Aug 2020 03:32:54 +0000</lastBuildDate>
    <atom:link href="https://blog.hopefly.top/tags/%E7%BB%84%E4%BB%B6/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>vue子组件修改父组件的数据</title>
      <link>https://blog.hopefly.top/blogdetail/5f24e2665edb9b37630af3bb/</link>
      <pubDate>Sat, 01 Aug 2020 03:32:54 +0000</pubDate>
      <guid>https://blog.hopefly.top/blogdetail/5f24e2665edb9b37630af3bb/</guid>
      <description>&lt;p&gt;vue在子组件中直接修改父组件传递下来的数据会报错：&#xA;&lt;code&gt;Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop&#39;s value. Prop being mutated: &amp;quot;json&amp;quot;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;原因是vue子组件不能直接修改父组件的数据，可以使用this.$emit发送通知，让父组件来修改。&#xA;示例代码：&lt;/p&gt;&#xA;&lt;p&gt;子组件：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;this.$emit(&amp;#34;changeData&amp;#34;, &amp;#34;要修改的数据&amp;#34;);&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;父组件：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;mycomponent :json=&amp;#34;JsonData&amp;#34; @changeData=&amp;#34;changeData&amp;#34;&amp;gt;&amp;lt;/mycomponent&amp;gt;&#xA;&#xA;data(){&#xA;    return {&#xA;&#x9;&#x9;JsonData:{}&#xA;&#x9;}&#xA;}&#xA;methods:{&#xA;    changeData(newData){&#xA;&#x9;    this.JsonData = newData;&#xA;&#x9;}&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;子组件发送changeData事件， 父组件绑定changeData事件并接受数据，赋值给父组件的JsonData属性，子组件的值也会改变。从而实现子组件修改父组件的属性值。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
