@vuejs_ru

Страница 3368 из 3900
Саша
01.08.2018
10:15:23
ну хзхз) у нас среди потребителей смузи 90% веганов)
У нас во Владике кто что хочет, тот и пьёт, не делимся на группы ??

Denis
01.08.2018
10:15:41
у нас тоже каждый пьет что хочет)

просто по группам) кто-то пиво в баре) кто-то смузи в кафе)

Саша
01.08.2018
10:16:23
Google
Anton
01.08.2018
10:16:27
я с коллегами в баре вино пью

не особо хочется пиво

они на меня презрительно косятся

Denis
01.08.2018
10:16:51
я на машине езжу на работу, вовсе не пью с коллегами)

Костя
01.08.2018
10:18:49
как по мне - не люблю к примеру пить и не пью. На мнение кого-то по барабану ?

Grigorii
01.08.2018
10:20:47
Добрый день) Mutations во vuex позволяют только напрямую работать с состоянием, используя только state, но не используя другие мутаторы, геттеры и т.д. При этом они очень удобны в части vue-dev-tools Правильно ли я понимаю, что если мне требуется во множестве мутаторов сделать одно и тоже действие (тоже мутатор), то я должен поменять их все на action, и потерять прекрасные возможности отладки?

Даня
01.08.2018
10:26:52
Привет, подскажите как лучше сделать. У меня есть компонент для отрисовки графика. Он связан со стором, который хранит информацию о данный, которые надо ренедерит. Этот компонент используется на разных страницах. Проблема сейчас в том, что когда перехожу на с одной страницы на другую, у меня в сторе хранятся данный прошлой страницы. Как мне кажется здесь проблема дизайна. Я это вижу как через пропс компонента передавать объект класс стор. Но кажется, что стор делать классом не очень идея, потому что как минимум не была предложена авторами. Другая идея более тривиальная - перед апдейтом данных чистить стейт.

Иван
01.08.2018
10:26:57
Вью в топ-3 гитхаба по звездам уже

Denis
01.08.2018
10:27:06
Нет, action для асинхронных действий

Grigorii
01.08.2018
10:31:39
что ты имеешь в виду под отладкой? Если нужно вызывать геттер, то передавай его через экшен в мьтеншен как аргумент
Имею в виду vue-dev-tools, где можно классно смотреть, какие мутаторы вызывались, с какими параметрами и т.д.

Хотя, я уже понял, что action всё равно в итоге вызывает мутатор и всё нормально)

Простите, затупил

Google
Альберт
01.08.2018
10:44:52
Товарищи, имеется проект, инициализированный через Vue CLI. К нему подключен bootstrap-vue, однако в итоге оказывается так, что компоненты даже тупо не собираются при компиляции. Подскажите, что я делаю не так? https://gist.github.com/kinjalik/d8fcb0d652975f12588f1feacade8eb0

Альберт
01.08.2018
10:49:15
Я бы выкинул, да тимлид требует

Mike
01.08.2018
10:49:28
Ребят привет) у меня не получается подключить шрифты в файле sass, ругается на лоадеры, но в компоненте, к примеру App.vue все работает. это известная проблема?

Альберт
01.08.2018
10:49:35
А совет помог, от души

Даня
01.08.2018
10:49:54
Привет, подскажите как лучше сделать. У меня есть компонент для отрисовки графика. Он связан со стором, который хранит информацию о данный, которые надо ренедерит. Этот компонент используется на разных страницах. Проблема сейчас в том, что когда перехожу на с одной страницы на другую, у меня в сторе хранятся данный прошлой страницы. Как мне кажется здесь проблема дизайна. Я это вижу как через пропс компонента передавать объект класс стор. Но кажется, что стор делать классом не очень идея, потому что как минимум не была предложена авторами. Другая идея более тривиальная - перед апдейтом данных чистить стейт.
Немного коряво написал. Сейчас стоит вопрос о том как лучше сделать. Из родительского компонента передавать дочернему через пропс стор (то есть количество сторов будет равно количеству родительских компонент) или использовать один стор, в котором просто надо обновлять стейт

Альберт
01.08.2018
10:51:34
Я же правильно понял, что сначала должен быть вставлен плагин во вью, а потом уже создаваться экземпляр с плагином?

Альберт
01.08.2018
10:53:22
Спасибо

Костя
01.08.2018
11:14:54
Подскажет ли кто сервис, регистрируясь, и добавляя ссылку CDN с ключем - можно смотреть аналитику посещения и активности пользователей (на сервисе в лк)?

michael
01.08.2018
11:40:25


Roman
01.08.2018
11:40:54
что за кирилица

michael
01.08.2018
11:41:35


Что ему нужно? В компоненте где использую ghAPI(gh просто сокращение) - instance axios-а подключаю через import/export

может по делу что предложешь?

Daniil
01.08.2018
11:45:12
Немного не по теме, а зачем тебе в проекте галп и вебпак?

michael
01.08.2018
11:45:24
По наследству

Google
Daniil
01.08.2018
11:45:31
Понял

michael
01.08.2018
11:45:33
досталось

я тоже умею читать

http.js: import axios from "axios/index"; export default ghAPI = axios.create({ baseURL: 'http://127.0.0.1:8000', headers: {'X-Requested-With': 'XMLHttpRequest'}, }) Projects.vue: import Project_item from './Project_item.vue' import ghAPI from '../http.js' export default { name: "Projects", components: {Project_item}, data: function () { return { projects: null, } }, comments: { Project_item, }, mounted: () => { ghAPI.get('projects/').then(response => { this.projects = response.data; }).catch(error => { console.log(error); this.errored = true; }).finally(() => (this.loading = false)); } }

Что я делаю не так?

michael
01.08.2018
11:55:22
не вижу где это лишнее

=> убери
Не могли бы тыкнуть носом, если вам не сложно

michael
01.08.2018
11:59:06
уже, но всё же это не помогло

Неправильно экспортировал ghAPI..

Саша
01.08.2018
12:09:45
Я слышал, что хорошо вынести все http-запросы (к API или чему ещё) в отделный модуль. Для этого достаточно просто сделать какой-нибудь services/request.js, с примерно таким содержанием: export const getPosts = axios('/posts') export const ... ? Или что-то хитрее делать надо?)

michael
01.08.2018
12:10:46
мой руководитель по практие использует для этих целей vuex, если я правильно понял его код

Типо store.js и там вся работа с запросами и данными

а в request.js только: import axios from "axios/index"; export default axios.create({ headers: {'X-Requested-With': 'XMLHttpRequest'}, })

Mike
01.08.2018
12:13:10
ребята как вы подлючаете шрифты в Vue?

Саша
01.08.2018
12:13:34
мой руководитель по практие использует для этих целей vuex, если я правильно понял его код
И каждый запрос это типа this.$store.dispatch('getPosts')? Вообще, да, я тоже такое видел, только пока не совсем пойму, какую роль тут vuex играет)

Google
Rustam
01.08.2018
12:13:56
всем привет

Roman
01.08.2018
12:14:03
А писать запросы в компонентах неправильно

Rustam
01.08.2018
12:14:04
Посдкажите плиз

new Vue({ el: '#app', render: h => h(NoteApp), router, store: notesStore, });

Rustam
01.08.2018
12:14:24
render: h => h(NoteApp), 0 вот эта строчка что означает. (Я только учусь еще)

Admin
ERROR: S client not available

Like
01.08.2018
12:14:27
А чо эта

Саша
01.08.2018
12:14:47
да, так делают, а в сторе или компонентах просто дергают эти функции. Как минимум, это более тестируемо
То есть, мы от vuex в этом случае исользуем только actions, не трогаем mutations и сам глобальный store?

Like
01.08.2018
12:14:58
А, напрямую запросы, а не через сервис апишки

Rustam
01.08.2018
12:16:26
у меня почему то пишет в тестовом примере [Vue warn]: Failed to mount component: template or render function not defined.

Mike
01.08.2018
12:16:57
ни кто не подскажет по шрифтам?

Hedint
01.08.2018
12:17:13
Все зависит от размера проекта и команды, как и везде) если у тебя 2 компонента с одним запросом, тебе не нужно выносить Api. А если у тебя десятки модулей внутри vuex и сотни компонентов, то над api тоже, вероятно, парочку абстракций и оно вынесено отдельно.

Саша
01.08.2018
12:17:17
не, приплел не то, что надо )
Ну как я себе представляю запросы через vuex: this.$store.dispatch('getPosts'), ну а в экшне просто возвращаем промис, который когда резолвится, возвращает json с постами

michael
01.08.2018
12:17:23
нет, вот пример компонента: <script> import {mapActions, mapState} from 'vuex'; const statusBgs = { 'success': 'bg-green', 'error': 'bg-red', 'recognition': 'bg-aqua', '': 'bg-yellow' }; const statusIcons = { 'success': 'fa-check', 'error': 'fa-times', 'recognition': 'fa-cog fa-spin', '': 'fa-spinner fa-spin' }; const statusWords = { 'success': 'Обработка завершена', 'error': 'Завершилось с ошибкой', 'recognition': 'Идет обработка', 'uploaded': 'Ждет обработки', '': 'Загрузка данных' }; export default { name: "Status", data: function() { return { isRestarted: false } }, computed: { bgClass: function () { const status = this.image ? this.image.status : null; return status && statusBgs[status] !== undefined ? statusBgs[status] : statusBgs['']; }, iconClass: function () { const status = this.image ? this.image.status : null; return status && statusIcons[status] !== undefined ? statusIcons[status] : statusIcons['']; }, word: function () { const status = this.image ? this.image.status : null; return status && statusWords[status] !== undefined ? statusWords[status] : statusWords['']; }, ...mapState({image: state => state.image}) }, methods: { makeRestart() { this.isRestarted = true; this.restart(); setTimeout(() => this.isRestarted = false, 5000); }, ...mapActions(['restart']) } } </script> А в store.js: ``` Vue.use(Vuex); const processingStatusses = ['uploaded', 'recognition']; const store = new Vuex.Store({ state: { id: null, image: null, ...: null }, mutations: { init(state, id) { state.id = id; }, image(state, data) { state.image = data; }, ....(state, data) { state.... = data; } }, actions: { async init({commit, dispatch}, id) { commit('init', id); await dispatch('load....'); await dispatch('load'); }, async load({state, commit, dispatch}) { try { const res = await request.get(/images/show/${state.id}); commit('image', res.data); if (processingStatusses.indexOf(res.data.status) !== -1) setTimeout(() => dispatch('load'), 1000); } catch (error) { dispatch('error', {message: 'Произошла сетевая ошибка, попробуйте еще раз', error}); } }, async restart({state, dispatch}) { await request.post(/images/restart/${state.id}/); dispatch('load'); },

Andrei
01.08.2018
12:17:43
Реакт в сладость, вью в радость! Бандиты, где при использовании vue-cli 3 теперь можно изменить конфиги вебпака? А то в package.json теперь какой-то "vue-cli-service"...

Like
01.08.2018
12:18:10
нет, вот пример компонента: <script> import {mapActions, mapState} from 'vuex'; const statusBgs = { 'success': 'bg-green', 'error': 'bg-red', 'recognition': 'bg-aqua', '': 'bg-yellow' }; const statusIcons = { 'success': 'fa-check', 'error': 'fa-times', 'recognition': 'fa-cog fa-spin', '': 'fa-spinner fa-spin' }; const statusWords = { 'success': 'Обработка завершена', 'error': 'Завершилось с ошибкой', 'recognition': 'Идет обработка', 'uploaded': 'Ждет обработки', '': 'Загрузка данных' }; export default { name: "Status", data: function() { return { isRestarted: false } }, computed: { bgClass: function () { const status = this.image ? this.image.status : null; return status && statusBgs[status] !== undefined ? statusBgs[status] : statusBgs['']; }, iconClass: function () { const status = this.image ? this.image.status : null; return status && statusIcons[status] !== undefined ? statusIcons[status] : statusIcons['']; }, word: function () { const status = this.image ? this.image.status : null; return status && statusWords[status] !== undefined ? statusWords[status] : statusWords['']; }, ...mapState({image: state => state.image}) }, methods: { makeRestart() { this.isRestarted = true; this.restart(); setTimeout(() => this.isRestarted = false, 5000); }, ...mapActions(['restart']) } } </script> А в store.js: ``` Vue.use(Vuex); const processingStatusses = ['uploaded', 'recognition']; const store = new Vuex.Store({ state: { id: null, image: null, ...: null }, mutations: { init(state, id) { state.id = id; }, image(state, data) { state.image = data; }, ....(state, data) { state.... = data; } }, actions: { async init({commit, dispatch}, id) { commit('init', id); await dispatch('load....'); await dispatch('load'); }, async load({state, commit, dispatch}) { try { const res = await request.get(/images/show/${state.id}); commit('image', res.data); if (processingStatusses.indexOf(res.data.status) !== -1) setTimeout(() => dispatch('load'), 1000); } catch (error) { dispatch('error', {message: 'Произошла сетевая ошибка, попробуйте еще раз', error}); } }, async restart({state, dispatch}) { await request.post(/images/restart/${state.id}/); dispatch('load'); },
Да пиздец, чо это за простыня

Google
michael
01.08.2018
12:18:32
Сорян

Саша
01.08.2018
12:19:22
нет, вот пример компонента: <script> import {mapActions, mapState} from 'vuex'; const statusBgs = { 'success': 'bg-green', 'error': 'bg-red', 'recognition': 'bg-aqua', '': 'bg-yellow' }; const statusIcons = { 'success': 'fa-check', 'error': 'fa-times', 'recognition': 'fa-cog fa-spin', '': 'fa-spinner fa-spin' }; const statusWords = { 'success': 'Обработка завершена', 'error': 'Завершилось с ошибкой', 'recognition': 'Идет обработка', 'uploaded': 'Ждет обработки', '': 'Загрузка данных' }; export default { name: "Status", data: function() { return { isRestarted: false } }, computed: { bgClass: function () { const status = this.image ? this.image.status : null; return status && statusBgs[status] !== undefined ? statusBgs[status] : statusBgs['']; }, iconClass: function () { const status = this.image ? this.image.status : null; return status && statusIcons[status] !== undefined ? statusIcons[status] : statusIcons['']; }, word: function () { const status = this.image ? this.image.status : null; return status && statusWords[status] !== undefined ? statusWords[status] : statusWords['']; }, ...mapState({image: state => state.image}) }, methods: { makeRestart() { this.isRestarted = true; this.restart(); setTimeout(() => this.isRestarted = false, 5000); }, ...mapActions(['restart']) } } </script> А в store.js: ``` Vue.use(Vuex); const processingStatusses = ['uploaded', 'recognition']; const store = new Vuex.Store({ state: { id: null, image: null, ...: null }, mutations: { init(state, id) { state.id = id; }, image(state, data) { state.image = data; }, ....(state, data) { state.... = data; } }, actions: { async init({commit, dispatch}, id) { commit('init', id); await dispatch('load....'); await dispatch('load'); }, async load({state, commit, dispatch}) { try { const res = await request.get(/images/show/${state.id}); commit('image', res.data); if (processingStatusses.indexOf(res.data.status) !== -1) setTimeout(() => dispatch('load'), 1000); } catch (error) { dispatch('error', {message: 'Произошла сетевая ошибка, попробуйте еще раз', error}); } }, async restart({state, dispatch}) { await request.post(/images/restart/${state.id}/); dispatch('load'); },
Я вот тоже думаю: конечная цель у меня админка; если на каждую модель будет столько стейтов и геттеров, будет же жесть)

Aga
01.08.2018
12:19:50
Господа

Костя
01.08.2018
12:19:57
господин?

Aga
01.08.2018
12:19:58
Кто юзает MeteorJS?

Aga
01.08.2018
12:20:17
ебусь уже второй день с одной проблемкой

Mike
01.08.2018
12:20:36
ясно

Aga
01.08.2018
12:20:43
Саша
01.08.2018
12:21:04
Не хочу смотреть чо там, но разбивай на модули
Да там ещё ничего нет, вот я на старте не хочу фигни натворить :D

Alex
01.08.2018
12:23:16
Коллеги, посоветуйте админку на vue.js

Aga
01.08.2018
12:24:25
Коллеги, посоветуйте админку на vue.js
https://github.com/PanJiaChen/vue-element-admin?utm_source=mybridge&utm_medium=blog&utm_campaign=read_more

Andrei
01.08.2018
12:24:43
Саша
01.08.2018
12:24:58
Не хочу смотреть чо там, но разбивай на модули
В итоге, как я в таком случае понял: Будут файлы, соответствующие модулям, например posts.js, users.js, etc примерно такого содержания: export default { getPosts() { return Promise( ~ axios('/posts') ) } } А в сторе vuex их заимпортить и засунуть в actions Я правильно представляю?)

michael
01.08.2018
12:25:33
Никто не сталкивался? TypeError: "_http2.default is undefined"

Alex
01.08.2018
12:25:53
@CanVeeD благодарю!

Страница 3368 из 3900