Ответы пользователя по тегу Vue.js
  • Как вызвать метод в компоненте vue после загрузки начального состояния?

    @vadimek
    Полуджун
    Мутации – синхронные транзакции, то есть, как правило, самые простые изменения state (=, Object.assign(), Array.prototype.slice()), главное, что синхронные. Асинхронные операции, такие как axious.get, надо переместить в action, и уже внутри then() делать commit, а диспатчить сам action надо в created() компонента.
    loadInfo ({ commit }) {
          commit(GET_USER_INFO);
    – пустая обертка над мутацией, не имеет смысла.
    Ответ написан
    Комментировать
  • Как вызвать метод в компоненте vue после получении данных из vuex?

    @vadimek
    Полуджун
    Поздно, конечно, но мне кажется, можно так:
    в action Vuex запрашивать данные, и там же выполнять следующий метод
    actions = {
      async getUser({ commit }) {
        const { data } = await axios.get('http://...');
        if (data.user) {
          commit(SET_USER, data.user);
          dispatch('getPreviewsForUser', data.user.token)
        } else {
          ...
        }
        
        return data;
      },
      getPreviewsForUser({commit}, token)  { //либо можно через state токен получать;
        ...
      }
    };
    Ответ написан
    Комментировать
  • Как чередовать компоненты в цикле Vue JS?

    @vadimek Автор вопроса
    Полуджун
    Сделал, но возможно вариант не оптимальный:
    <template>
      <table>
        <thead>
        <tr>
          <th>Name</th>
          <th>Price</th>
        </tr>
        </thead>
        <tbody>
          <template v-for="(product, index) in filteredProducts">
            <ProductCategoryRow
                    v-if="index == 0 || product.category != filteredProducts[index - 1].category"
                    :category="product.category"
            />
            <ProductRow
                    :key="product.id"
                    :item="product"
            />
          </template>
        </tbody>
      </table>
    </template>
    Ответ написан
    Комментировать