Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Глобальные функции / vue cli mixin (https://javascript.ru/forum/css-html/82338-globalnye-funkcii-vue-cli-mixin.html)

fori 21.04.2021 01:39

Глобальные функции / vue cli mixin
 
Здравствуйте, для того чтоб у каждого компонента был доступ к какойто функции я определил глобальный миксин (Работает)
main.js-file{
import globalmixins from "./mixins/globalmixins"
Vue.mixin(globalmixins);
}

src/mixins/globalmixins.js-file{
export default {
  methods: {
    getMinSide() {
      if (
        document.documentElement.clientWidth < document.documentElement.clientHeight
      ) {
        return document.documentElement.clientWidth;
      } else {
        return document.documentElement.clientHeight;
      }
    }
  }
}
}

Я могу его вызвать через vnode.context.getMinSide(); Но могу ли я обявить функцыю вне methods и вызвать ее?

fori 21.04.2021 09:15

Также позвольте спросить если в каждом компоненте нужна какая-то переменная ее лучше хранить в миксинах или в vuex или в prototype
К примеру
export default {
  data() {
    return {
      assetsResolution: screen.width <= 1920 && screen.height <= 1080 ? 1080 : 2160,
    };
  },
};

Насколько я понимаю если я ее оставлю в миксине она будет пересчитатся у каждого компонента и для оптимизации ее лучше поставить в vuex чтоб она не считалась заново в каждом компоненте или я не прав))?

fori 21.04.2021 09:30

В общем prototype подошел идеально https://vuejs.org/v2/cookbook/adding...roperties.html

Vlasenko Fedor 21.04.2021 11:28

Используйте state
Для чтения и мутации для изменения
methods: {
    ...mapMutations('cup', ['SET_INT_VALUE', 'SET_BOOL_VALUE']),
    UPDATE() {
      this.$store.state.board.build();
    }
  },
  computed: {
    width: {
      get() {
        return this.$store.state.cup.width
      },
      set(value) {
        this.SET_INT_VALUE({field: 'width', value});
        this.UPDATE();
      }
    }, //....
}


Часовой пояс GMT +3, время: 15:28.