4 回答

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以在收到來(lái)自 API 的信息后添加演示數(shù)據(jù):
...
data: () => ({ books: [] });
...
methods: {
// API call to get the books
async requestBooks() {
// TODO: add try catch block
const books = await getBooks(); // Your API call
this.books = addPresentationInformation(books);
},
addPresentationInformation(books) {
return books.map(book => {
return {
...book, // default format from API (name, author)
open: false, // add the open variable to the object
reading: false,
currentPage: 0
}
});
}
},
created() {
this.requestBooks(); // Call the api on created hook to initialize the books data prop
}
你可以根據(jù)需要添加許多表示變量,我推薦使用 vuex 來(lái)存儲(chǔ)書籍及其表示變量,這樣你就可以將每本書的信息保存在本地存儲(chǔ)中,這樣在重新啟動(dòng)應(yīng)用程序后,你就可以知道某本書是否是當(dāng)前正在閱讀或正在打開。

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
可能另一種方法是復(fù)制對(duì)象并對(duì)其進(jìn)行修改并保留原始響應(yīng)數(shù)據(jù)
data(){
let data = Object.assign({}, this);
// add necessary presentation data
return data;
}

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
我現(xiàn)在使用normalizr來(lái)處理和展平來(lái)自后端 API 的響應(yīng),這個(gè)庫(kù)提供了一種添加額外數(shù)據(jù)的方法。例如,下面schema
添加了hidden
data 屬性。
const taskSchema = new schema.Entity(
'tasks',
{},
{
// add presentation data
processStrategy: (value) => ({
...value,
hidden: false
}),
}
);

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
我個(gè)人會(huì)維護(hù)另一個(gè)數(shù)組,其中包含與每本書相關(guān)的一些狀態(tài),而不是嘗試改變 API 響應(yīng)數(shù)據(jù)。但這只是我。
添加回答
舉報(bào)