CodeInMyHeart
@CodeInMyHeart
SOS

Как передать переменную в другой компонент vue?

Добрый день, есть такой вопрос, как передать значение переменной из одного компонента в другой соседний? Сложность в том, что это должно случиться при клике. У меня в одном компоненте кнопка, открывающая меню, второй компонент - само меню. Читал про props, но он же получает переменную с самого начала, и она становится undefined.

Панель с кнопкой:
export default{
        name: "left-aside",
        isBarMenuClicked: false, // эту переменную нужно передать
        methods: {
            openLeftMenu: function(){
                this.isBarMenuClicked = true;
            }
        }
    }


Меню:
export default {
        name: "boards-menu",
        data() {
            return {
                isLeftMenuShowed: true, // вторая переменная, отвечающая за меню
            }
        },
        methods: {
            closeLeftMenu: function () {
                this.isLeftMenuShowed = false
            }
        },
        props: [
            'isBarMenuClicked'
        ]
    }

И ещё, как можно избавиться от двух переменных? В компоненте меню есть переменная, которая закрывает меню, а чтобы открыть меню, придется использовать вторую, переданную из компонента панели с кнопкой. Как-то не красиво на самом то деле.
Заранее спасибо.
  • Вопрос задан
  • 2491 просмотр
Решения вопроса 3
@Gilfy
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега Vue.js
isBarMenuClicked: false, // эту переменную нужно передать

Не нужно. Зачем кнопке знать о состоянии меню? - её дело нажиматься и оповещать об этом того, кто находится выше. Делайте по клику $emit('click'), подписывайтесь на событие в родительском компоненте, переключайте там значение переменной, отвечающей за открытость меню и передавайте её в меню как параметр.
Ответ написан
Комментировать
IgorPI
@IgorPI
this.$parent.$emit()
this.$parent.$on()
this.$root.$emit()
this.$root.$on()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы