Как я могу получить доступ к идентификатору маршрутизатора в хранилище vuex и добавить его к методу Axios get

#vue.js #axios #vuex

#vue.js #axios #vuex

Вопрос:

Привет, я пытаюсь получить идентификатор от маршрутизатора и добавить его к методу получения axios. Это код из store.js В обычном компоненте Vue вы можете сделать что-то вроде этого: id: this. $router.id но в vuex store не работает

 #How can I do the same thing but in Vuex
import Vue from 'vue'
import Vuex from 'vuex'
import Axios from 'axios';
import router from './router'

Vue.use(Vuex)
Vue.use(Axios)
Vue.use(router)

export default new Vuex.Store({
  // data() {
  //   return {
  //     m_id:this.$route.params.m_id

  //   }
  // },
  // m_id : this.$route.params.m_id,

  state: {
    video_key: [],
  },
  mutations: {
    updateInfo (state , video_key){
      state.video_key = video_key
    }
  },
  getters:{
    m_id : this.route.params.m_id 
  },
  actions: {

    fetchData({commit,getters}){
      axios.get(`https://api.themoviedb.org/3/movie/${this.m_id}/videos?api_key=7bc75e1ed95b84e912176b719cdeeff9amp;language=en-US`)
        .then(response =>{
          commit('updateInfo',response.data.results[0].key)
        })
    }
  }
})
  

Комментарии:

1. Попробуйте использовать router.currentRoute.params.m_id

2. где я должен заменить его в getters? или в axios.get?

3. Работает, спасибо, но каким-то образом он извлекает мои данные из предыдущего маршрута, когда я делаю запрос из axios, я получаю правильный идентификатор с правильными данными. Как только я обновляю страницу, фактическое содержимое заменяется из api правильным содержимым

4. Рад, что смог помочь. Пожалуйста, отметьте мой ответ как правильный, чтобы другие люди знали ответ. Спасибо!

Ответ №1:

Замените this.route.params.m_id на router.currentRoute.params.m_id .

Вы можете найти более подробную информацию о свойствах экземпляра маршрутизатора здесь: ссылка