Избегайте мутации напрямую - PullRequest
0 голосов
/ 25 июня 2019

Я получаю предупреждение:

app.js: 87486 [Vue warn]: избегайте прямого изменения свойства, так как значение будет перезаписываться при повторной визуализации родительского компонента. Вместо этого используйте данные или вычисляемое свойство, основанное на значении реквизита. Подставка изменена: "likescount"

Мой Клинок

        <path-like-toggle likescount="{{$path->likeCount}}" isliked="{{$path->canBeunLiked()}}" path="{{$path->slug}}" type="{{$path->type}}" ></path-like-toggle>

Код Vue

      props:['isliked','path','type','likescount']
    ,
methods:{
         like () {
             axios.post(`/${this.type}/${this.path}/like/`)
                this.likingStatus = true;
                this.likescount ++;
        },
         unlike () {
             axios.post(`/${this.type}/${this.path}/unlike/`)
                this.likingStatus = false;
                this.likescount --;

        },
    }

Ответы [ 2 ]

3 голосов
/ 25 июня 2019

Инициализируйте атрибут данных из вашего реквизита и управляйте им.

export default {
    data() {
        return {
            numberOfLikes: this.likescount
        }
    },

    props: [
        'isliked',
        'path',
        'type',
        'likescount'
    ],

    methods:{
        like() {
            axios.post(`/${this.type}/${this.path}/like/`);

            // ...

            this.numberOfLikes++;
        },

        unlike() {
            axios.post(`/${this.type}/${this.path}/unlike/`);

            // ...

            this.numberOfLikes--;
        },
    }
}
0 голосов
/ 25 июня 2019

Так же, как в предупреждении говорится, что вы не должны изменять видимость, удалите this.likescount ++;this.likescount -;

и это уберет предупреждение ... ваш реквизит должен быть чистым

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...