Tôi đang xây dựng một ứng dụng với VueJS và tôi đang sử dụng máy khách Apollo để tìm nạp dữ liệu từ cơ sở dữ liệu thông qua máy chủ GrapgQL. Tôi có mã trông như thế này:Tại sao Apollo/GraphQL trả về một đối tượng không thể mở rộng?
apollo.query({
query,
variables
})
// context.commit('populateComments', payload) triggers the mutation
.then(payload => context.commit('populateComments', payload))
Sau đó, trong những đột biến của tôi, tôi đã sau
populateComments: (state, payload) => {
state.comments = payload.data.comments
}
Khi tôi cố gắng đẩy đối tượng khác vào mảng bình luận trong đột biến khác tôi nhận được một lỗi mà đọc "Không thể thêm thuộc tính 300, đối tượng không thể mở rộng". Tôi đã phát hiện ra rằng các công việc sau
state.comments = Array.from(payload.data.comments)
Nhưng .. Tôi không chắc chắn như thế nào có hiệu quả đó là để liên tục sao chép mảng lớn như thế này? Đây có phải là cách ưa thích để làm điều đó không?
Object.assign sẽ cung cấp cho bạn cùng là kiện của đối tượng/loại của bạn được lồng sâu – vbranden