Мутации Vuex должны быть функциональными, но "mutations.default" - {} - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь извлечь данные и вставить их в основную HTML-таблицу

<tr>
    <td v-for="item in dataTable" :key="item.id">{{item.threadName}}</td>
</tr>

, но я застреваю с этой ошибкой при фиксации смонтированной функции.

мутация.js

import Vue from 'vue'

export default {
    receiveAll (state, data) {
        data.forEach(item => {
            return item
        })
    }
}

это где я имитирую его внутри actions.js

import * as api from '../api'

export const getData = ({ commit }) => {
    api.getData(data => {
        commit('receiveAll', data)
    })
}

data.js

'use strict';

module.export = [
    {
        id: 'm_1',
        threadID: 't_1',
        threadName: 'Jing and Bill',
        authorName: 'Bill',
        text: 'Hey Jing, want to give a Flux talk at ForwardJS?',
        timestamp: Date.now() - 99999
    },
    {
        id: 'm_2',
        threadID: 't_1',
        threadName: 'Jing and Bill',
        authorName: 'Bill',
        text: 'Seems like a pretty cool conference.',
        timestamp: Date.now() - 89999
    }
]

api / index.js

const data = require('./data')
const LATENCY = 16

export function getData (cb) {
    setTimeout(() => {
        cb(data)
    }, LATENCY)
}

и вот vuex store

import Vue from 'vue'
import Vuex from 'vuex'
import * as actions from './actions'
import * as mutations from './mutations'

Vue.use(Vuex)

const state = {
    getData: []
}

export default new Vuex.Store({
    state,
    actions,
    mutations
})

Внутри моегокомпонент, я просто инициирую две v-модели и данные в вычисленных

<script>
    import { mapActions } from 'vuex'

    export default {
        name: 'SearchTable',
        data () {
            return {
                search_query: '',
                search_sort: ''
            }
        },
        computed: mapActions({
            dataTable: 'getData'
        })
    }
</script>

Ответы [ 4 ]

0 голосов
/ 24 июня 2019

Проверьте, правильно ли закрыты фигурные скобки для объекта мутации, это простая ошибка, но выдает то же сообщение об ошибке.

mutations: {
     getAppIds: (state, payload) => {

   }
  <== this curly braces was missing for me
0 голосов
/ 14 февраля 2019

верно, мутация - это объект, и у него есть методы.это краткая форма этого примера

 export default {
        receiveAll: function (state, data) {
            data.forEach(item => {
                state.getData.push(item)
            })
        }
   }

см. Определения методов


вы должны вставить данные, чтобы указать, когда произойдет мутация

export default {
    receiveAll (state, data) {
        data.forEach(item => {
            state.getData.push(item)
        })
    }
}
0 голосов
/ 07 мая 2019

В файле vuex store измените импорт мутаций с

import * as mutations from './mutations'

на

import mutations from './mutations'

Поскольку вы экспортируете один отдельный объект, а не отдельныйпеременные,
вы не можете импортировать все (иначе *) из файла.

0 голосов
/ 14 февраля 2019

Измените receiveAll (state, data){ ... на function receiveAll (state, data) { ...

попробуйте это:

import Vue from 'vue'

const receiveAll = (state, data) => {
    return data.forEach(item => {
        return item
    })
}

export default {
  receiveAll 
}
...