Как получить хранилище форм объекта по идентификатору Vue - PullRequest
0 голосов
/ 02 сентября 2018

Мне нужно получить объект из магазина по идентификатору из маршрута. Идентификатор зависит от маршрута, и я получаю его правильно. Что-то не так с функцией. Может быть, я должен использовать функцию фильтра?

    props: ['id'], // my props
    computed: { // computed property
      product () { // function name
        const id = this.id; // getting id
        return this.$store.getters.productById(id) // getting object from store
      }
    }

    state: { // state 
      products: [ //products array
        {
          id: 1, // id
          title: 'Lenovo Legion Y520', // title
          vendor: 'Lenovo', // vendor
          color: 'black', // color
          material: 'metal/plastic', // material
    },
    {
          id: 2, // id
          title: 'Asus FX503VD', // title
          vendor: 'Asus', // vendor
          color: 'white', // color
          material: 'plastic', //plastic
    },
    {
          id: 3, // id
          title: 'ASUS TUF Gaming FX504GD', // title
          vendor: 'Asus', // vendor
          color: 'black', // color
          material: 'metal/plastic' //material
      }
    ]

    getters: { // getters
      productById (state) { // function
      return productId => { // product by id
        return state.products.find(product => product.id === productId)
        }
      }
    }

// route settings
{
  path: '/product/:id', // route path
  props: true, //enabled props
  name: 'product', // route name
  component: Product // component name
}

// main js importing plugins and Vue

import router from './router' // import router
import store from './store' // import store
import Vuetify from 'vuetify' // import vuetify

Vue.use(Vuetify); // use vuetify plugin

Vue.config.productionTip = false; // false

new Vue({ // new class instance
  el: '#app', // el name
  router, // enabled routing
  store, // enabled store
  components: { App }, // component name
  template: '<App/>' // template name
});

Может быть, я передаю идентификатор не соответствующим образом, это. $ Store.getters.productById (id)? У меня нет идей, как с этим справиться

Ответы [ 2 ]

0 голосов
/ 02 сентября 2018

Возможно, не используйте сравнение строгого равенства внутри вашего productById геттера.

Если вы отлаживаете внутри функции, вы можете увидеть:

console.log(typeof product.id) #=> number
console.log(typeof productId)  #=> string

Попробуйте с product.id == productId вместо product.id === productId

0 голосов
/ 02 сентября 2018

State и getters - это разные объекты. Вы должны разделить их. Поставьте закрывающую скобку после "]"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...