{"id":35018,"date":"2025-11-24T22:41:35","date_gmt":"2025-11-24T19:41:35","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=35018"},"modified":"2025-11-24T22:41:35","modified_gmt":"2025-11-24T19:41:35","slug":"vue-js-uygulamalarinda-basit-modal-bildirimler-vue-sweetalert2-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/vue-js-uygulamalarinda-basit-modal-bildirimler-vue-sweetalert2-rehberi\/","title":{"rendered":"Vue.js Uygulamalar\u0131nda Basit Modal Bildirimler: Vue-SweetAlert2 Rehberi"},"content":{"rendered":"<p><body><\/p>\n<h2>Vue.js Uygulamalar\u0131nda Basit Modal Bildirimler: Vue-SweetAlert2 Rehberi<\/h2>\n<p>Modern web uygulamalar\u0131nda kullan\u0131c\u0131 deneyimi (UX) kritik \u00f6neme sahiptir. Kullan\u0131c\u0131ya bilgi vermek, onay almak veya bir eylemin sonucunu bildirmek i\u00e7in kullan\u0131lan standart taray\u0131c\u0131 uyar\u0131lar\u0131 (<code>alert()<\/code>, <code>confirm()<\/code>) genellikle \u00e7irkin, \u00f6zelle\u015ftirilemez ve kullan\u0131c\u0131 ak\u0131\u015f\u0131n\u0131 bozan bir yap\u0131ya sahiptir. \u0130\u015fte tam bu noktada, \u015f\u0131k ve i\u015flevsel modal bildirim k\u00fct\u00fcphaneleri devreye girer. Bu rehberde, Vue.js projelerinizde SweetAlert2&#8217;nin g\u00fcc\u00fcn\u00fc <code>vue-sweetalert2<\/code> entegrasyonu ile nas\u0131l kullanaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz.<\/p>\n<p><strong>SweetAlert2<\/strong>, estetik a\u00e7\u0131dan ho\u015f, duyarl\u0131 ve olduk\u00e7a \u00f6zelle\u015ftirilebilir uyar\u0131 kutular\u0131 olu\u015fturmak i\u00e7in tasarlanm\u0131\u015f pop\u00fcler bir JavaScript k\u00fct\u00fcphanesidir. <strong>Vue-SweetAlert2<\/strong> ise bu k\u00fct\u00fcphaneyi Vue.js ekosistemine sorunsuz bir \u015fekilde entegre ederek, <code>this.$swal<\/code> gibi pratik y\u00f6ntemlerle bile\u015fenleriniz i\u00e7inde kolayca kullanman\u0131z\u0131 sa\u011flar.<\/p>\n<h3>Vue.js Projenize Vue-SweetAlert2 Entegre Etme<\/h3>\n<p>Vue.js projenize SweetAlert2&#8217;yi dahil etmek olduk\u00e7a basittir. Mevcut bir Vue projeniz oldu\u011funu varsayarak a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 izleyelim:<\/p>\n<h4>1. Paketleri Kurulum<\/h4>\n<p>\u00d6ncelikle, SweetAlert2 ve Vue-SweetAlert2 paketlerini projenize y\u00fcklemeniz gerekiyor. Terminalinizi a\u00e7\u0131n ve projenizin k\u00f6k dizininde a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">\n    npm install sweetalert2 vue-sweetalert2\n    # veya\n    yarn add sweetalert2 vue-sweetalert2\n    <\/code><\/pre>\n<h4>2. Global Entegrasyon (main.js\/main.ts)<\/h4>\n<p><code>vue-sweetalert2<\/code>&#8216;yi uygulaman\u0131z\u0131n her yerinden eri\u015filebilir k\u0131lmak i\u00e7in genellikle <code>main.js<\/code> (veya TypeScript kullan\u0131yorsan\u0131z <code>main.ts<\/code>) dosyan\u0131zda global olarak kaydedilir. Bu, herhangi bir Vue bile\u015feniniz i\u00e7inde <code>this.$swal<\/code> arac\u0131l\u0131\u011f\u0131yla SweetAlert2 fonksiyonlar\u0131na eri\u015fmenizi sa\u011flar.<\/p>\n<pre><code class=\"language-javascript\">\n    \/\/ main.js veya main.ts\n    import { createApp } from 'vue';\n    import App from '.\/App.vue';\n\n    import VueSweetalert2 from 'vue-sweetalert2';\n    import 'sweetalert2\/dist\/sweetalert2.min.css'; \/\/ SweetAlert2'nin varsay\u0131lan stilini dahil edin\n\n    const app = createApp(App);\n\n    \/\/ VueSweetalert2'yi global olarak kaydedin\n    \/\/ \u0130ste\u011fe ba\u011fl\u0131 olarak, varsay\u0131lan ayarlar\u0131 burada belirleyebilirsiniz\n    const options = {\n        confirmButtonColor: '#41b882', \/\/ Vue ye\u015fili\n        cancelButtonColor: '#ff7674', \/\/ K\u0131rm\u0131z\u0131\n        \/\/ Di\u011fer varsay\u0131lan se\u00e7enekler buraya eklenebilir\n    };\n    app.use(VueSweetalert2, options);\n\n    app.mount('#app');\n    <\/code><\/pre>\n<p>Yukar\u0131daki \u00f6rnekte, <code>app.use(VueSweetalert2, options);<\/code> sat\u0131r\u0131, SweetAlert2&#8217;yi Vue uygulamas\u0131na bir eklenti olarak ekler. <code>options<\/code> nesnesi, t\u00fcm SweetAlert2 bildirimleriniz i\u00e7in ge\u00e7erli olacak varsay\u0131lan ayarlar\u0131 tan\u0131mlaman\u0131za olanak tan\u0131r. \u00d6rne\u011fin, onay ve iptal d\u00fc\u011fmelerinin renklerini global olarak de\u011fi\u015ftirebilirsiniz.<\/p>\n<h3>Temel Kullan\u0131m Senaryolar\u0131<\/h3>\n<p>SweetAlert2&#8217;yi projenize ba\u015far\u0131yla entegre ettikten sonra, \u00e7e\u015fitli bildirim t\u00fcrlerini kolayca olu\u015fturabilirsiniz. \u0130\u015fte en yayg\u0131n kullan\u0131m senaryolar\u0131:<\/p>\n<h4>1. Basit Bilgi Bildirimi<\/h4>\n<p>Kullan\u0131c\u0131ya basit bir mesaj g\u00f6stermek i\u00e7in en temel kullan\u0131m \u015feklidir. Genellikle bir i\u015flemin ba\u015far\u0131yla tamamland\u0131\u011f\u0131n\u0131, bir hatay\u0131 veya genel bir bilgiyi iletmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-html\">\n    <template>\n      <button @click=\"showSuccessAlert\">Ba\u015far\u0131 Bildirimi G\u00f6ster<\/button>\n      <button @click=\"showErrorAlert\">Hata Bildirimi G\u00f6ster<\/button>\n      <button @click=\"showInfoAlert\">Bilgi Bildirimi G\u00f6ster<\/button>\n    <\/template>\n\n    <script>\n    export default {\n      methods: {\n        showSuccessAlert() {\n          this.$swal('Harika!', '\u0130\u015flem ba\u015far\u0131yla tamamland\u0131.', 'success');\n        },\n        showErrorAlert() {\n          this.$swal('Oops...', 'Bir \u015feyler yanl\u0131\u015f gitti!', 'error');\n        },\n        showInfoAlert() {\n          this.$swal('Bilgi', 'Bu bir bilgi mesaj\u0131d\u0131r.', 'info');\n        }\n      }\n    };\n    <\/script>\n    <\/code><\/pre>\n<p><code>this.$swal()<\/code> metodu \u00fc\u00e7 parametre al\u0131r: ba\u015fl\u0131k, metin ve ikon t\u00fcr\u00fc (&#8216;success&#8217;, &#8216;error&#8217;, &#8216;warning&#8217;, &#8216;info&#8217;, &#8216;question&#8217;).<\/p>\n<h4>2. Onay Diyalo\u011fu<\/h4>\n<p>Kullan\u0131c\u0131dan bir eylemi (\u00f6rne\u011fin bir \u00f6\u011feyi silme) onaylamas\u0131n\u0131 veya iptal etmesini istedi\u011finizde onay diyaloglar\u0131 kullan\u0131l\u0131r. Bu diyaloglar, kullan\u0131c\u0131n\u0131n karar\u0131n\u0131 bir Promise arac\u0131l\u0131\u011f\u0131yla alman\u0131z\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-html\">\n    <template>\n      <button @click=\"confirmDeletion\">\u00d6\u011feyi Sil<\/button>\n    <\/template>\n\n    <script>\n    export default {\n      methods: {\n        confirmDeletion() {\n          this.$swal({\n            title: 'Emin misiniz?',\n            text: \"Bu i\u015flemi geri alamayacaks\u0131n\u0131z!\",\n            icon: 'warning',\n            showCancelButton: true,\n            confirmButtonText: 'Evet, sil!',\n            cancelButtonText: 'Hay\u0131r, iptal et!',\n            reverseButtons: true \/\/ D\u00fc\u011fmeleri ters \u00e7evir (iptal solda, onay sa\u011fda)\n          }).then((result) => {\n            if (result.isConfirmed) {\n              this.$swal(\n                'Silindi!',\n                '\u00d6\u011fe ba\u015far\u0131yla silindi.',\n                'success'\n              );\n              \/\/ Burada silme i\u015flemini ger\u00e7ekle\u015ftiren kodu \u00e7a\u011f\u0131rabilirsiniz.\n            } else if (result.dismiss === this.$swal.DismissReason.cancel) {\n              this.$swal(\n                '\u0130ptal Edildi',\n                'Silme i\u015flemi iptal edildi :)',\n                'error'\n              );\n            }\n          });\n        }\n      }\n    };\n    <\/script>\n    <\/code><\/pre>\n<p><code>then()<\/code> metodu i\u00e7inde d\u00f6nen <code>result<\/code> nesnesi, kullan\u0131c\u0131n\u0131n hangi d\u00fc\u011fmeye bast\u0131\u011f\u0131n\u0131 (<code>isConfirmed<\/code>, <code>isDenied<\/code>) veya bildirimi kapatma \u015feklini (<code>isDismissed<\/code>, <code>dismiss<\/code> nedeni) kontrol etmenizi sa\u011flar.<\/p>\n<h4>3. Giri\u015f Kutusu (Input Dialog)<\/h4>\n<p>Kullan\u0131c\u0131dan k\u0131sa bir metin veya say\u0131 giri\u015fi almak i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code class=\"language-html\">\n    <template>\n      <button @click=\"askForName\">Ad\u0131n\u0131z\u0131 Sor<\/button>\n    <\/template>\n\n    <script>\n    export default {\n      methods: {\n        askForName() {\n          this.$swal({\n            title: 'Ad\u0131n\u0131z nedir?',\n            input: 'text',\n            inputLabel: 'L\u00fctfen ad\u0131n\u0131z\u0131 girin:',\n            inputPlaceholder: '\u00d6rn: Can Y\u0131lmaz',\n            showCancelButton: true,\n            inputValidator: (value) => {\n              if (!value) {\n                return 'Ad\u0131n\u0131z\u0131 girmeniz gerekli!'\n              }\n            }\n          }).then((result) => {\n            if (result.isConfirmed) {\n              this.$swal(<code>Merhaba, ${result.value}!<\/code>);\n            }\n          });\n        }\n      }\n    };\n    <\/script>\n    <\/code><\/pre>\n<p><code>input<\/code> se\u00e7ene\u011fi ile farkl\u0131 giri\u015f t\u00fcrleri (<code>'text'<\/code>, <code>'email'<\/code>, <code>'password'<\/code>, <code>'number'<\/code>, <code>'textarea'<\/code>, <code>'select'<\/code>, <code>'radio'<\/code>, <code>'checkbox'<\/code>, <code>'file'<\/code>) belirleyebilirsiniz. <code>inputValidator<\/code> ile giri\u015f de\u011ferini do\u011frulayabilirsiniz.<\/p>\n<h3>\u0130leri Seviye Kullan\u0131m ve Pratik \u0130pu\u00e7lar\u0131<\/h3>\n<p>SweetAlert2 sadece basit bildirimlerden ibaret de\u011fildir; uygulaman\u0131z\u0131n gereksinimlerine g\u00f6re \u00e7ok daha fazlas\u0131n\u0131 yapabilir.<\/p>\n<h4>1. Toast Bildirimleri<\/h4>\n<p>Kullan\u0131c\u0131n\u0131n dikkatini da\u011f\u0131tmadan k\u0131sa s\u00fcreli, genellikle ekran\u0131n k\u00f6\u015fesinde beliren bildirimler i\u00e7in &#8220;toast&#8221; tipi bildirimler kullan\u0131\u015fl\u0131d\u0131r. Bir i\u015flemin tamamland\u0131\u011f\u0131n\u0131 veya bir hatay\u0131 sessizce bildirmek i\u00e7in idealdirler.<\/p>\n<pre><code class=\"language-html\">\n    <template>\n      <button @click=\"showToast\">Toast Bildirimi G\u00f6ster<\/button>\n    <\/template>\n\n    <script>\n    export default {\n      methods: {\n        showToast() {\n          this.$swal.fire({\n            toast: true,\n            position: 'top-end', \/\/ Sa\u011f \u00fcst k\u00f6\u015fe\n            showConfirmButton: false, \/\/ Onay d\u00fc\u011fmesi g\u00f6sterme\n            timer: 3000, \/\/ 3 saniye sonra otomatik kapan\u0131r\n            timerProgressBar: true, \/\/ Geri say\u0131m \u00e7ubu\u011fu\n            icon: 'success',\n            title: 'Ba\u015far\u0131yla kaydedildi!'\n          });\n        }\n      }\n    };\n    <\/script>\n    <\/code><\/pre>\n<p><code>toast: true<\/code> se\u00e7ene\u011fi, bildirimi bir toast&#8217;a d\u00f6n\u00fc\u015ft\u00fcr\u00fcr. <code>position<\/code>, bildirimin ekranda nerede g\u00f6r\u00fcnece\u011fini, <code>timer<\/code> ise ne kadar s\u00fcre sonra kaybolaca\u011f\u0131n\u0131 belirler.<\/p>\n<h4>2. Mixin Kullanarak Tekrarlayan Toast Yap\u0131lar\u0131n\u0131 Basitle\u015ftirme<\/h4>\n<p>E\u011fer uygulaman\u0131zda s\u0131k\u00e7a toast bildirimleri kullan\u0131yorsan\u0131z, bir SweetAlert2 mixin&#8217;i olu\u015fturarak kod tekrar\u0131n\u0131 azaltabilirsiniz. Bu, toast&#8217;lar\u0131n\u0131z i\u00e7in varsay\u0131lan ayarlar\u0131 tek bir yerde tan\u0131mlaman\u0131za olanak tan\u0131r.<\/p>\n<pre><code class=\"language-html\">\n    <template>\n      <button @click=\"showCustomToast\">\u00d6zel Toast G\u00f6ster<\/button>\n    <\/template>\n\n    <script>\n    export default {\n      methods: {\n        showCustomToast() {\n          const Toast = this.$swal.mixin({\n            toast: true,\n            position: 'top-end',\n            showConfirmButton: false,\n            timer: 3000,\n            timerProgressBar: true,\n            didOpen: (toast) => {\n              toast.addEventListener('mouseenter', this.$swal.stopTimer);\n              toast.addEventListener('mouseleave', this.$swal.resumeTimer);\n            }\n          });\n\n          Toast.fire({\n            icon: 'success',\n            title: 'Ba\u015far\u0131yla g\u00fcncellendi!'\n          });\n\n          \/\/ Ba\u015fka bir \u00f6rnek\n          \/\/ Toast.fire({\n          \/\/   icon: 'error',\n          \/\/   title: 'Hata olu\u015ftu!'\n          \/\/ });\n        }\n      }\n    };\n    <\/script>\n    <\/code><\/pre>\n<p><code>this.$swal.mixin()<\/code> metodu ile \u00f6nceden tan\u0131mlanm\u0131\u015f ayarlara sahip yeni bir SweetAlert2 objesi olu\u015fturabilir ve bu objeyi kullanarak bildirimleri tetikleyebilirsiniz. <code>didOpen<\/code> gibi ya\u015fam d\u00f6ng\u00fcs\u00fc hook&#8217;lar\u0131 ile bildirimin a\u00e7\u0131l\u0131\u015f\u0131nda veya kapan\u0131\u015f\u0131nda \u00f6zel i\u015flemler yapabilirsiniz.<\/p>\n<h4>3. Asenkron \u0130\u015flemler ve Y\u00fckleme G\u00f6stergeleri<\/h4>\n<p>Kullan\u0131c\u0131n\u0131n bir d\u00fc\u011fmeye bast\u0131ktan sonra arka planda bir API \u00e7a\u011fr\u0131s\u0131 gibi asenkron bir i\u015flem yapman\u0131z gerekti\u011finde, SweetAlert2 bu durumu zarif\u00e7e y\u00f6netmenize yard\u0131mc\u0131 olur. \u0130\u015flem devam ederken bir y\u00fckleme g\u00f6stergesi g\u00f6sterebilir ve i\u015flem bitti\u011finde sonucu bildirebilirsiniz.<\/p>\n<pre><code class=\"language-html\">\n    <template>\n      <button @click=\"submitAsyncData\">Asenkron Veri G\u00f6nder<\/button>\n    <\/template>\n\n    <script>\n    export default {\n      methods: {\n        submitAsyncData() {\n          this.$swal.fire({\n            title: 'Veriler g\u00f6nderiliyor...',\n            text: 'L\u00fctfen bekleyin',\n            icon: 'info',\n            showConfirmButton: false,\n            allowOutsideClick: false, \/\/ D\u0131\u015far\u0131 t\u0131klay\u0131nca kapanmas\u0131n\n            didOpen: () => {\n              this.$swal.showLoading(); \/\/ Y\u00fckleme g\u00f6stergesini ba\u015flat\n            },\n            preConfirm: () => {\n              return new Promise((resolve) => {\n                setTimeout(() => {\n                  \/\/ Ger\u00e7ek bir API \u00e7a\u011fr\u0131s\u0131n\u0131 sim\u00fcle edelim\n                  const success = Math.random() > 0.5; \/\/ Rastgele ba\u015far\u0131\/hata\n                  if (success) {\n                    resolve('Veriler ba\u015far\u0131yla kaydedildi!');\n                  } else {\n                    resolve(new Error('Sunucu hatas\u0131 olu\u015ftu.'));\n                  }\n                }, 2000); \/\/ 2 saniye gecikme\n              });\n            }\n          }).then((result) => {\n            if (result.isConfirmed) { \/\/ preConfirm resolve oldu\u011funda buraya d\u00fc\u015fer\n              if (result.value instanceof Error) {\n                this.$swal('Hata!', result.value.message, 'error');\n              } else {\n                this.$swal('Ba\u015far\u0131l\u0131!', result.value, 'success');\n              }\n            }\n            \/\/ else if (result.dismiss === this.$swal.DismissReason.cancel) { ... }\n          });\n        }\n      }\n    };\n    <\/script>\n    <\/code><\/pre>\n<p><code>preConfirm<\/code> fonksiyonu, onay d\u00fc\u011fmesine bas\u0131ld\u0131\u011f\u0131nda \u00e7al\u0131\u015f\u0131r ve bir Promise d\u00f6nd\u00fcrmelidir. Bu Promise \u00e7\u00f6z\u00fcld\u00fc\u011f\u00fcnde (resolve), <code>then()<\/code> blo\u011fu tetiklenir. <code>didOpen<\/code> i\u00e7inde <code>this.$swal.showLoading()<\/code> \u00e7a\u011f\u0131rarak y\u00fckleme animasyonunu ba\u015flatabilirsiniz. Ayr\u0131ca, <code>allowOutsideClick: false<\/code> gibi se\u00e7eneklerle kullan\u0131c\u0131n\u0131n bildirimi erken kapatmas\u0131n\u0131 engelleyebilirsiniz.<\/p>\n<h3>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<p><code>vue-sweetalert2<\/code> k\u00fct\u00fcphanesi, Vue.js uygulamalar\u0131n\u0131za \u015f\u0131k, i\u015flevsel ve kullan\u0131c\u0131 dostu modal bildirimler eklemenin en etkili yollar\u0131ndan biridir. Kurulumu kolayd\u0131r, kullan\u0131m\u0131 basittir ve geni\u015f \u00f6zelle\u015ftirme se\u00e7enekleri sayesinde uygulaman\u0131z\u0131n tasar\u0131m diline m\u00fckemmel bir \u015fekilde uyum sa\u011flayabilir. Kullan\u0131c\u0131 deneyimini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131ran bu k\u00fct\u00fcphane, modern web uygulamalar\u0131n\u0131n vazge\u00e7ilmez bir par\u00e7as\u0131d\u0131r.<\/p>\n<h4>S\u0131k\u00e7a Sorulan Sorular<\/h4>\n<p><strong>S1: <code>this.$swal<\/code> neden bile\u015fenimde \u00e7al\u0131\u015fm\u0131yor?<\/strong><br \/>\n    C1: Muhtemelen <code>main.js<\/code> (veya <code>main.ts<\/code>) dosyan\u0131zda <code>VueSweetalert2<\/code>&#8216;yi global olarak kaydetmediniz. <code>app.use(VueSweetalert2, options);<\/code> sat\u0131r\u0131n\u0131n do\u011fru yerde ve do\u011fru \u015fekilde \u00e7a\u011fr\u0131ld\u0131\u011f\u0131ndan emin olun. Ayr\u0131ca, <code>import 'sweetalert2\/dist\/sweetalert2.min.css';<\/code> sat\u0131r\u0131n\u0131 eklemeyi unutmay\u0131n, aksi takdirde bildirimler stilize g\u00f6r\u00fcnmeyecektir.<\/p>\n<p><strong>S2: SweetAlert2&#8217;nin varsay\u0131lan g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc nas\u0131l \u00f6zelle\u015ftiririm?<\/strong><br \/>\n    C2: SweetAlert2, <code>confirmButtonColor<\/code>, <code>cancelButtonColor<\/code>, <code>background<\/code> gibi bir\u00e7ok se\u00e7enek sunar. Bunlar\u0131 global olarak <code>main.js<\/code>&#8216;deki <code>options<\/code> nesnesinde veya her bir <code>this.$swal.fire()<\/code> \u00e7a\u011fr\u0131s\u0131nda belirtebilirsiniz. Daha derinlemesine \u00f6zelle\u015ftirme i\u00e7in, SweetAlert2&#8217;nin CSS de\u011fi\u015fkenlerini ge\u00e7ersiz k\u0131labilir veya <code>customClass<\/code> se\u00e7ene\u011fi ile kendi CSS s\u0131n\u0131flar\u0131n\u0131z\u0131 ekleyebilirsiniz.<\/p>\n<p><strong>S3: Asenkron bir i\u015flemden sonra bildirim nas\u0131l g\u00f6sterilir?<\/strong><br \/>\n    C3: <code>preConfirm<\/code> se\u00e7ene\u011fini kullan\u0131n. Bu fonksiyon bir Promise d\u00f6nd\u00fcrmelidir. Promise \u00e7\u00f6z\u00fcld\u00fc\u011f\u00fcnde (resolve), <code>then()<\/code> blo\u011fu \u00e7al\u0131\u015f\u0131r. \u0130\u015flem devam ederken kullan\u0131c\u0131ya bilgi vermek i\u00e7in <code>didOpen<\/code> ya\u015fam d\u00f6ng\u00fcs\u00fc hook&#8217;u i\u00e7inde <code>this.$swal.showLoading()<\/code> metodunu \u00e7a\u011f\u0131rabilirsiniz.<\/p>\n<p><strong>S4: Toast bildirimleri ile normal SweetAlert2 bildirimleri aras\u0131ndaki fark nedir?<\/strong><br \/>\n    C4: Normal SweetAlert2 bildirimleri genellikle ekran\u0131n ortas\u0131nda belirir, kullan\u0131c\u0131 etkile\u015fimi gerektirir (kapatma d\u00fc\u011fmesi, onay\/iptal) ve uygulaman\u0131n ak\u0131\u015f\u0131n\u0131 durdurur. Toast bildirimleri ise genellikle ekran\u0131n bir k\u00f6\u015fesinde (\u00f6rne\u011fin sa\u011f \u00fcst) belirir, k\u0131sa s\u00fcrelidir, otomatik olarak kapan\u0131r ve kullan\u0131c\u0131n\u0131n mevcut ak\u0131\u015f\u0131n\u0131 kesintiye u\u011fratmaz. Daha \u00e7ok &#8220;arka planda bir \u015fey oldu&#8221; tarz\u0131 bilgilendirmeler i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p><strong>S5: SweetAlert2&#8217;yi sadece belirli bir bile\u015fende kullanabilir miyim?<\/strong><br \/>\n    C5: Evet, ancak bu yayg\u0131n bir kullan\u0131m de\u011fildir. Global olarak kaydetmek yerine, sadece ihtiyac\u0131n\u0131z olan bile\u015fenlerde SweetAlert2&#8217;yi import edip kullanabilirsiniz. Ancak bu, <code>this.$swal<\/code> yerine do\u011frudan <code>Swal.fire()<\/code> \u015feklinde kullanman\u0131z gerekti\u011fi ve her bile\u015fende import etme zahmetine girmeniz gerekti\u011fi anlam\u0131na gelir. \u00c7o\u011fu senaryoda global entegrasyon daha pratik ve tavsiye edilen yoldur.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Vue.js Uygulamalar\u0131nda Basit Modal Bildirimler: Vue-SweetAlert2 Rehberi\n    Modern web uygulamalar\u0131nda kullan\u0131c\u0131 deneyimi (UX) kritik \u00f6neme","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1402],"tags":[],"class_list":{"0":"post-35018","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-vue","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Vue.js Uygulamalar\u0131nda Basit Modal Bildirimler: Vue-SweetAlert2 Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/vue-js-uygulamalarinda-basit-modal-bildirimler-vue-sweetalert2-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Vue.js Uygulamalar\u0131nda Basit Modal Bildirimler: Vue-SweetAlert2 Rehberi\" \/>\n<meta property=\"og:description\" content=\"Vue.js Uygulamalar\u0131nda Basit Modal Bildirimler: Vue-SweetAlert2 Rehberi   Modern web uygulamalar\u0131nda kullan\u0131c\u0131 deneyimi (UX) kritik \u00f6neme\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/vue-js-uygulamalarinda-basit-modal-bildirimler-vue-sweetalert2-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-24T19:41:35+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vue-js-uygulamalarinda-basit-modal-bildirimler-vue-sweetalert2-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vue-js-uygulamalarinda-basit-modal-bildirimler-vue-sweetalert2-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Vue.js Uygulamalar\u0131nda Basit Modal Bildirimler: Vue-SweetAlert2 Rehberi\",\"datePublished\":\"2025-11-24T19:41:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vue-js-uygulamalarinda-basit-modal-bildirimler-vue-sweetalert2-rehberi\/\"},\"wordCount\":1185,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Vue\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/vue-js-uygulamalarinda-basit-modal-bildirimler-vue-sweetalert2-rehberi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vue-js-uygulamalarinda-basit-modal-bildirimler-vue-sweetalert2-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/vue-js-uygulamalarinda-basit-modal-bildirimler-vue-sweetalert2-rehberi\/\",\"name\":\"Vue.js Uygulamalar\u0131nda Basit Modal Bildirimler: Vue-SweetAlert2 Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-24T19:41:35+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vue-js-uygulamalarinda-basit-modal-bildirimler-vue-sweetalert2-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/vue-js-uygulamalarinda-basit-modal-bildirimler-vue-sweetalert2-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vue-js-uygulamalarinda-basit-modal-bildirimler-vue-sweetalert2-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Vue.js Uygulamalar\u0131nda Basit Modal Bildirimler: Vue-SweetAlert2 Rehberi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Vue.js Uygulamalar\u0131nda Basit Modal Bildirimler: Vue-SweetAlert2 Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/vue-js-uygulamalarinda-basit-modal-bildirimler-vue-sweetalert2-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"Vue.js Uygulamalar\u0131nda Basit Modal Bildirimler: Vue-SweetAlert2 Rehberi","og_description":"Vue.js Uygulamalar\u0131nda Basit Modal Bildirimler: Vue-SweetAlert2 Rehberi   Modern web uygulamalar\u0131nda kullan\u0131c\u0131 deneyimi (UX) kritik \u00f6neme","og_url":"https:\/\/fatihsoysal.com\/blog\/vue-js-uygulamalarinda-basit-modal-bildirimler-vue-sweetalert2-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-24T19:41:35+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"7 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/vue-js-uygulamalarinda-basit-modal-bildirimler-vue-sweetalert2-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/vue-js-uygulamalarinda-basit-modal-bildirimler-vue-sweetalert2-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Vue.js Uygulamalar\u0131nda Basit Modal Bildirimler: Vue-SweetAlert2 Rehberi","datePublished":"2025-11-24T19:41:35+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/vue-js-uygulamalarinda-basit-modal-bildirimler-vue-sweetalert2-rehberi\/"},"wordCount":1185,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Vue"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/vue-js-uygulamalarinda-basit-modal-bildirimler-vue-sweetalert2-rehberi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/vue-js-uygulamalarinda-basit-modal-bildirimler-vue-sweetalert2-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/vue-js-uygulamalarinda-basit-modal-bildirimler-vue-sweetalert2-rehberi\/","name":"Vue.js Uygulamalar\u0131nda Basit Modal Bildirimler: Vue-SweetAlert2 Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-24T19:41:35+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/vue-js-uygulamalarinda-basit-modal-bildirimler-vue-sweetalert2-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/vue-js-uygulamalarinda-basit-modal-bildirimler-vue-sweetalert2-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/vue-js-uygulamalarinda-basit-modal-bildirimler-vue-sweetalert2-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Vue.js Uygulamalar\u0131nda Basit Modal Bildirimler: Vue-SweetAlert2 Rehberi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35018","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=35018"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35018\/revisions"}],"predecessor-version":[{"id":35019,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35018\/revisions\/35019"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=35018"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=35018"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=35018"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}