@slagoris

Как избавиться от ошибки Unexpected mutation of prop?

Привет. Подскажите пжлст. Изучаю пропсы в vue, вроде все делаю по уроку. Но линтер выдает ошибку неожиданной мутации. Буду признателен за помощь в разъяснении.
<template>
  <div class="container pt-1">
    <div class="card">
      <h2>Актуальные новости {{ now }}</h2>
    </div>
    <app-news
      v-for="item in news"
      :key="item.id"
      :title="item.title"
      :id="item.id"
      :is-open="item.isOpen"
    ></app-news>
  </div>
</template>

<script>
import AppNews from './AppNews'
export default {
  name: 'App',
  data () {
    return {
      now: new Date().toLocaleDateString(),
      news: [
        {
          title: 'Новость 1',
          id: 1,
          isOpen: false
        },
        {
          title: 'Новость 2',
          id: 2,
          isOpen: false
        }
      ]
    }
  },
  components: { AppNews }
}
</script>


<template>
  <div class="card">
    <h3>{{ title }}</h3>
    <button class="btn" @click="isOpen = !isOpen">Открыть</button>
    <p v-if="isOpen">Lorem ipsum dolor sit amet.</p>
  </div>
</template>

<script>
export default {
  name: 'AppNews',
  props: {
    title: {
      type: String,
      required: true
    },
    id: {
      type: Number,
      required: true
    },
    isOpen: {
      type: Boolean,
      required: false,
      default: false
    }
  },
  data () {
    return {
    }
  },
  methods: {
  }
}
  • Вопрос задан
  • 2057 просмотров
Решения вопроса 1
@Miki06
Используй $emit чтобы изменить свойство isOpen, свойства нельзя менять напрямую внутри компонента для этого существуют пользовательские события. А вообще это написано в доках
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы