Kompozyty to proste uaktualnienie do miksów, którego powinieneś od razu zacząć używać w aplikacjach Vue 3.

Podczas programowania ważne jest zorganizowanie bazy kodu w taki sposób, aby w miarę możliwości ponownie go używać. Powielanie kodu może rozdęć bazę kodu i skomplikować debugowanie, szczególnie w większych aplikacjach.

Vue upraszcza ponowne wykorzystanie kodu poprzez elementy kompozytorskie. Kompozyty to funkcje, które hermetyzują logikę i można ich ponownie używać w całym projekcie, aby obsługiwać podobną funkcjonalność.

Czy zawsze były to produkty komponowalne?

Zanim w Vue 3 wprowadzono elementy kompozytowe, można było używać miksów do przechwytywania kodu i ponownego wykorzystania go w różnych częściach aplikacji. Zawiera miksy Opcje Vue.js, takie jak dane, metody i punkty zaczepienia cyklu życia, umożliwiając ponowne wykorzystanie kodu w wielu komponentach.

Aby utworzyć miksy, należy je uporządkować w oddzielnych plikach, a następnie zastosować do komponentów, dodając miks do pliku miksy właściwość w obiekcie opcji komponentu. Na przykład:

instagram viewer
// formValidation.js
exportconst formValidationMixin = {
data() {
return {
formData: {
username: '',
password: '',
},
formErrors: {
username: '',
password: '',
},
};
},
methods: {
validateForm() {
this.formErrors = {};

if (!this.formData.username.trim()) {
this.formErrors.username = 'Username is required.';
}

if (!this.formData.password.trim()) {
this.formErrors.password = 'Password is required.';
}

returnObject.keys(this.formErrors).length 0;
},
},
};

Ten fragment kodu pokazuje zawartość miksu do sprawdzania poprawności formularzy. W tym miksie znajdują się dwie właściwości danych —tworzyć dane I formularzBłędy— początkowo ustawione na puste wartości.

formData przechowuje dane wejściowe formularza, w tym pola nazwy użytkownika i hasła zainicjowane jako puste. formErrors odzwierciedla tę strukturę, aby przechowywać potencjalne komunikaty o błędach, również początkowo puste.

Mieszanka zawiera również metodę, zweryfikuj formularz(), aby sprawdzić, czy pola nazwy użytkownika i hasła nie są puste. Jeśli którekolwiek pole jest puste, właściwość danych formErrors jest wypełniana odpowiednim komunikatem o błędzie.

Metoda powraca PRAWDA dla prawidłowego formularza, gdy formErrors jest pusty. Możesz użyć miksu, importując go do komponentu Vue i dodając do właściwości mixin obiektu Options:

<template>
<div>
<form @submit.prevent="submitForm">
<div>
<labelfor="username">Username:label>
<inputtype="text"id="username"v-model="formData.username" />
<spanclass="error">{{ formErrors.username }}span>
div>

<div>
<labelfor="password">Password:label>
<inputtype="password"id="password"v-model="formData.password" />
<spanclass="error">{{ formErrors.password }}span>
div>

<buttontype="submit">Submitbutton>
form>
div>
template>

<script>
import { formValidation } from "./formValidation.js";

export default {
mixins: [formValidation],
methods: {
submitForm() {
if (this.validateForm()) {
alert("Form submitted successfully!");
} else {
alert("Please correct the errors in the form.");
}
},
},
};
script>

<style>
.error {
color: red;
}
style>

Ten przykład pokazuje komponent Vue napisany przy użyciu podejścia obiektowego Options. The miksy property zawiera wszystkie zaimportowane miksy. W tym przypadku komponent korzysta z metody validForm z pliku Walidacja formularza mixin, aby poinformować użytkownika, czy przesłanie formularza powiodło się.

Jak korzystać z materiałów kompozytowych

Plik kompozytorski to samodzielny plik JavaScript z funkcjami dostosowanymi do konkretnych problemów lub wymagań. Możesz wykorzystać API kompozycji Vue w ramach komponowalnego, używając funkcji takich jak refs i obliczone refes.

Dostęp do API kompozycji umożliwia tworzenie funkcji integrujących się z różnymi komponentami. Funkcje te zwracają obiekt, który można łatwo zaimportować i włączyć do komponentów Vue za pomocą funkcji konfiguracji interfejsu Composition API.

Utwórz nowy plik JavaScript w swoim projekcie źródło katalog, w którym chcesz użyć pliku composable. W przypadku większych projektów rozważ zorganizowanie folderu w src i utworzenie oddzielnych plików JavaScript dla różnych obiektów kompozytorskich, upewniając się, że nazwa każdego obiektu kompozytorskiego odzwierciedla jego przeznaczenie.

W pliku JavaScript zdefiniuj wymaganą funkcję. Oto restrukturyzacja Walidacja formularza miksowanie jako materiał do komponowania:

// formValidation.js
import { reactive } from'vue';

exportfunctionuseFormValidation() {
const state = reactive({
formData: {
username: '',
password: '',
},
formErrors: {
username: '',
password: '',
},
});

functionvalidateForm() {
state.formErrors = {};

if (!state.formData.username.trim()) {
state.formErrors.username = 'Username is required.';
}

if (!state.formData.password.trim()) {
state.formErrors.password = 'Password is required.';
}

returnObject.keys(state.formErrors).length 0;
}

return {
state,
validateForm,
};
}

Ten fragment zaczyna się od zaimportowania funkcji reaktywnej z pliku vue pakiet. Następnie tworzy funkcję, którą można wyeksportować, użyjFormValidation().

Kontynuuje, tworząc zmienną reaktywną, państwo, w którym znajdują się właściwości formData i formErrors. Następnie fragment kodu obsługuje weryfikację formularza, stosując podejście bardzo podobne do miksowania. Na koniec zwraca zmienną stanu i funkcję validForm jako obiekt.

Możesz użyć tego narzędzia do komponowania importowanie funkcji JavaScript z pliku w swoim komponencie:

<template>
<div>
<form @submit.prevent="submitForm">
<div>
<labelfor="username">Username:label>
<inputtype="text"id="username"v-model="state.formData.username" />
<spanclass="error">{{ state.formErrors.username }}span>
div>

<div>
<labelfor="password">Password:label>
<inputtype="password"id="password"v-model="state.formData.password" />
<spanclass="error">{{ state.formErrors.password }}span>
div>

<buttontype="submit">Submitbutton>
form>
div>
template>

<scriptsetup>
import { useFormValidation } from "./formValidation.js";
import { ref } from "vue";
const { state, validateForm } = useFormValidation();

const submitForm = () => {
if (validateForm()) {
alert("Form submitted successfully!");
} else {
alert("Please correct the errors in the form.");
}
};
script>

<style>
.error {
color: red;
}
style>

Po zaimportowaniu zestawu useFormValidation ten kod niszczy obiekt JavaScript powraca i kontynuuje walidację formularza. Ostrzega, czy przesłany formularz zakończył się sukcesem lub zawiera błędy.

Kompozyty to nowe miksy

Podczas gdy miksy były przydatne w Vue 2 do ponownego wykorzystania kodu, w Vue 3 zastąpiły je elementy kompozytorskie. Kompozyty zapewniają bardziej uporządkowane i łatwiejsze w utrzymaniu podejście do ponownego wykorzystania logiki w aplikacjach Vue.js, ułatwiając tworzenie skalowalnych aplikacji internetowych za pomocą Vue.