Я хотел бы динамически создать URL-путь для моего действия публикации axios в моем приложении vue.js
Вот действие:
editProduct: function ({dispatch, commit}, payload) {
axios
.put('http://localhost:8081/product/5b5ca691e4f0d93c18e3f6d9', payload)
.then(res => dispatch('loadProducts', res.data))
.catch(function (error) {
console.info(error)
})
.then(() => {
commit('clearAddEditProduct')
})
}
Я хотел бы заменить "5b5ca691e4f0d93c18e3f6d9" тем, что находится в состоянии
state: { // data
product: {
name: '',
description: '',
externalid: '',
active: '',
id: ''
}
В частности, идентификатор продукта
Какие-либо предложения?





Используйте state из контекста, переданного вашему действию.
Например
editProduct: function ({dispatch, commit, state}, payload) {
// note the return below. This lets you compose actions
return axios
.put(`http://localhost:8081/product/${encodeURIComponent(state.product.id)}`, payload)
// etc
См. https://vuex.vuejs.org/guide/actions.html и, в частности, обратите внимание на раздел Составление действий.
Обратите внимание, что я использую литерал шаблона для форматирования строки URL. Это эквивалент
'http://localhost:8081/product/' + encodeURIComponent(state.product.id)
@JakeMcCabe Вы использовали одинарные кавычки, но в моем ответе используются обратные кавычки, то есть `. См. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Запрос на размещение теперь отправляет "$ {state.addeditproduct.id}" в качестве идентификатора. Подробнее см. В моем ответе. У меня есть образцы кода.