Что лучше всего подходит для следующего сценария с точки зрения чистой логики и обслуживания?
Мой вариант использования состоит в том, что существует объект запроса, параметры которого представляют собой набор text
и результаты предыдущего запроса.
Сначала я подумал структурировать код следующим образом (см. Псевдокод):
data() {
return {
queries : {
q1 : { data: `${this.text} + ${this.formerResults}` }
// q2, q3...
},
formerResults : ''
}
},
methods : {
makeQuery : function() {
let vm = this;
axios({ /* param of the query, data : this.queries.q1 */ })
.then((response) => { vm.formerResults += /* add the results */ })
}
Проблема заключается в том, что formerResults
действительно добавляется, но при добавлении в следующий запрос q1
приводит к значению undefined
. Я не могу сказать почему, но решил проблему, структурировав запрос q1
как вычисляемое свойство.
Можете ли вы сказать, почему логика не работает при использовании свойства и работает с вычисленным свойством?
computed: {
q1() {
return {
// same as above
}
}
// q2, q3 ...
}
и назовите это в моих методах:
axios({ /* param of the query, data : this.q1 */ });
Я вижу, что оба параметра text
и formerResults
переданы.
Однако я хотел бы сгруппировать запросы (q1, q2, q3 ..) под одним и тем же объектом queries
, как в data()
: это сделано для ясности кода, поскольку все эти запросы будут относиться к одному и тому же url strong >, а у меня могут быть и другие.
Но пытаюсь:
computed: {
computedQueries : {
q1() {
return {
// same as above
}
},
// q2, q3 ...
}
}
и назовите это так в моих методах:
axios({ /* param of the query, data : this.computedQueries.q1 */ })
приведет к ошибке vue:
Error in v-on handler: "TypeError: Cannot read property 'q1' of undefined"
Не могли бы вы пояснить, как я могу сгруппировать (или вложить) вычисленные свойства в один объект?
Действительно ли мне нужно использовать вычисляемое свойство в моем примере, чтобы formerResults
не было неопределенным в следующем запросе? Вы можете посоветовать, как содержать код в чистоте?