Vuex Mutation不适用于Nuxt.js

时间:2018-03-05 21:19:55

标签: vue.js vuex nuxt.js

vuex和nuxt的新手,所以可能有一个非常简单的解决方法。我有两个中间件,一个使用AXIOS与github进行api调用,另一个使用转换为JSON的medium.com用户的RSS源。

github变异在提交存储时工作正常,中等变异不会提交到商店。

// store / index.js

export const state = () => ({
    github: [],
    medium: [],
    blog: []
  })

  export const mutations = {
    ADD_MEDIUM(state, data) {
        data.items.forEach((el) => {
            state.medium.push({
                'createdOn': el.pubDate,
                'title': el.title,
                'url': el.link
            })
        })
    },
    ADD_GITHUB(state, data) {
        if(state.github.length === 0){
            data.data.forEach((el) => {
                state.github.push({
                    'createdOn': el.created_at,
                    'title': el.full_name,
                    'url': el.html_url
                  })
            })
        }
    },

  }

// middleware / medium.js

import rssParser from 'rss-parser'
let parser = new rssParser()

export default function ({ store, route }) {
    parser.parseURL('https://medium.com/feed/@user_name')
    .then((resp) => {
        store.commit('ADD_MEDIUM', resp)
    })

}

// middleware / github.js

import axios from 'axios'

export default function ({ store, route }) {
    axios.get('https://api.github.com/users/user_name/repos')
    .then((resp) => {
        store.commit('ADD_GITHUB', resp)
    })
}

1 个答案:

答案 0 :(得分:0)

将此留待将来搜索。 rss-parser在被解雇时没有返回,因为它缺少CORS。

import rssParser from 'rss-parser'
const CORS_PROXY = "https://cors-anywhere.herokuapp.com/"

export default function ({ store, route }) {
    let parser = new rssParser()

    parser.parseURL(CORS_PROXY + 'https://medium.com/feed/@user_name', (err, feed) => {
        console.log(feed)
        store.commit('ADD_MEDIUM', feed)
    })
}