Учитывая классический режим Vuex store nuxtServerInit
для выполнения @nuxtjs/axios
модуля $get
для получения простого JSON:
import Vuex from "vuex";
const createStore = () => {
return new Vuex.Store({
state: () => ({
todo: null
}),
mutations: {
receiveTodo(state, todo) {
state.todo = todo;
}
},
actions: {
async nuxtServerInit({ commit }, { app }) {
const todo = await app.$axios.$get("https://jsonplaceholder.typicode.com/todos/1");
console.log(todo);
commit("receiveTodo", todo);
}
}
});
};
export default createStore;
Приближается значение todo
назад как:
��\u0002\u0000 �o;�лϓt`\tv� �j��\u0003�j��\u0003~;$tp��JP����6\b�SAs�B�\u0004N��vy�a�e��ᰱ��\u0007
Если в параметрах axios для debug
установлено значение true
, дополнительно регистрируется следующее:
[Axios] [200 OK] [GET] https://jsonplaceholder.typicode.com/todos/1
Какие дополнительные шаги мне необходимо предпринять дляизвлечь данные JSON из этого ответа?Нужно ли устанавливать заголовок для указания типа возврата application/json
?Нужно ли использовать что-то вроде json()
против ответа, как если бы вы использовали fetch()
?Попытка получить доступ к свойству data
, как если бы вы использовали не-nuxt axios, приводит к получению undefined
:
async nuxtServerInit({ commit }, { app }) {
const { data } = await app.$axios.$get("https://jsonplaceholder.typicode.com/todos/1");
console.log(data) // undefined
}
Это приложение было создано с использованием create-nuxt-app
и использует "nuxt": "^2.1.0"
и "@nuxtjs/axios": "^5.3.3"
.
Обновление:
Выполнение того же вызова app.$axios.$get("https://jsonplaceholder.typicode.com/todos/1")
в компоненте в методе asyncData()
успешно возвращает JSON.Кажется, это может быть проблема с синтаксическим анализом при выполнении в nuxtServerInit()
.
Спасибо за любую помощь, которую вы можете предоставить!