Tại sao component data phải là một function?
Tại sao component data phải là một function?
Trong Vue.js, mỗi khi bạn định nghĩa một component, thuộc tính data
phải là một hàm (function) chứ không phải là một đối tượng trực tiếp. Điều này là bắt buộc vì mỗi instance của component cần phải có một bản sao riêng biệt của đối tượng data
để tránh chia sẻ trạng thái giữa các instance, điều này có thể dẫn đến các vấn đề không mong muốn trong ứng dụng.
Khi bạn sử dụng một đối tượng trực tiếp cho data
, tất cả các instance của component sẽ chia sẻ cùng một đối tượng data
. Điều này có nghĩa là bất kỳ thay đổi nào trên một instance sẽ ảnh hưởng đến tất cả các instance khác, vì chúng đều tham chiếu đến cùng một đối tượng data
.
Khi data
được định nghĩa như một hàm, Vue.js sẽ gọi hàm này mỗi khi cần tạo một instance mới của component, và từ đó mỗi instance sẽ có bản sao riêng biệt của đối tượng data
được trả về từ hàm. Điều này đảm bảo rằng mỗi instance có trạng thái riêng biệt và không ảnh hưởng lẫn nhau.
Ví dụ về cách sử dụng data
như một hàm trong một component Vue.js:
Vue.component('my-component', {
data: function () {
return {
counter: 0,
};
},
});
Trong ví dụ trên, mỗi khi my-component
được sử dụng, một bản sao mới của đối tượng data
với counter
được khởi tạo là 0 sẽ được tạo ra cho mỗi instance của my-component
. Điều này giúp mỗi instance duy trì trạng thái độc lập của nó.
middle
Gợi ý câu hỏi phỏng vấn
Chưa có bình luận nào