μλ
νμΈμ!
KB IT's Your Life 7κΈ° κΈ°μλ¨ μ
λλ€
μ΄μ μ κ· μμ
μ λμ΄λκ³ νμ΄λ νλ‘μ νΈμ
λ€μ΄κ°λ μκΈ°λ€μ!!!
λ²μ¨ μκ°μ΄ μ΄λ κ²λ μ§λ¬λ€λ....μκ°μ΄ λΉ λ₯΄λ©΄ μ΄μ¬ν μ΄κ³ μλ€λ μ¦κ±°λΌκ³ μκ°νκ³ λλμ± μ΄μ¬ν κ°λ°νκ² μ΅λλ€><
μ΄λ² μκ°μλ κ²μν μμ νμ΄μ§λ₯Ό λ§λ¬΄λ¦¬νκ³ μΈμ¦ κ°λκΉμ§ λΆμ΄λ μμ
μ νμ΄μ!!!
κΈ°λ₯ νλμ© λΆμ¬λκ°λ€ 보λκΉ μ΄μ μ§μ§ μλΉμ€ κ°μ 보μ΄κΈ° μμνμ΅λλ€.
κ²μν μμ νμ΄μ§ λ§λ¬΄λ¦¬

μμ νμ΄μ§μμ κΈ°λ³Έμ μΌλ‘ νμν κ²λ€λΆν° μ€λΉνμ΄μ.
λ°μν λ°μ΄ν°λ₯Ό μν ref, reactive, νμ¬ κΈ λ²νΈλ₯Ό μκΈ° μν useRoute, μμ μλ£ ν μ΄λμ μν useRouter β κ±°μ νμ μ΄ λ κ°κ° μΈνΈλ‘ λ°λΌλ€λλλ€.
const route = useRoute()
const router = useRouter()
const articleNo = route.params.articleNoμμΈ λ³΄κΈ°, μμ , μμ νμ΄μ§μμλ νμ μ΄ λΌμΈμ΄ νμνλ€κ³ κ°μ‘°νμ ¨μ΄μ.
첨λΆνμΌ μμ β findIndex + splice

κΈ°μ‘΄ 첨λΆνμΌμ μμ ν λ λ°°μ΄ μ€κ° μμλ₯Ό μ κ±°ν΄μΌ νλλ°, μ΄λ findIndexλ‘ μμΉλ₯Ό μ°Ύκ³ spliceλ‘ μμ νλ ν¨ν΄μ λ°°μ μ΄μ.
const idx = attachments.value.findIndex(f => f.no === fileNo)
attachments.value.splice(idx, 1)μλ²μμ λ¨Όμ μμ νκ³ , κ·Έλ€μ ν΄λΌμ΄μΈνΈ λ°°μ΄μμλ μ κ±°νλ μμκ° μ€μν©λλ€.
μ΄λ²€νΈ νΈλ€λ¬μ λ§€κ°λ³μ λκΈ°κΈ°

ν΄λ¦ μ΄λ²€νΈ νΈλ€λ¬λ₯Ό μ°κ²°ν λ νμμλ ν¨μλͺ
λ§ μ μΌλ©΄ μ΄λ²€νΈ κ°μ²΄κ° μλμΌλ‘ μ λ¬λΌμ.
κ·Όλ° μ΄λ²μλ νμΌ λ²νΈ κ°μ 컀μ€ν
λ§€κ°λ³μλ₯Ό λκ²¨μΌ νλλ°, κ·Έλ΄ λλ νΈμΆλ¬Έ ννλ‘ μ¨μΌ ν©λλ€.
<!-- λ§€κ°λ³μ μμ λ -->
@click="handleSubmit"
<!-- λ§€κ°λ³μ μμ λ -->
@click="removeFile(file.no, file.name)"μ΄λ²€νΈ κ°μ²΄λ κ°μ΄ λκΈ°κ³ μΆλ€λ©΄ $eventλ₯Ό λͺ
μμ μΌλ‘ μΆκ°νλ©΄ λΌμ.
SPAμμ νμΌ λ€μ΄λ‘λ β λμ aνκ·Έ

SPA νκ²½μμλ <a> νκ·Έλ₯Ό μ§μ HTMLμ λλ κ±Έ κΆμ₯νμ§ μμμ. μλͺ» λ€λ£¨λ©΄ μ±μ΄ 리μ
λ μ μκ±°λ μ.
κ·Έλμ μλ°μ€ν¬λ¦½νΈλ‘ λμ μΌλ‘ λ§λ€μλ€ μ κ±°νλ λ°©μμ μλλ€.
const a = document.createElement('a')
a.href = downloadUrl
document.body.appendChild(a)
a.click()
document.body.removeChild(a)νλ©΄μ 보μ΄μ§ μκ² μΆκ°νλ€κ° ν΄λ¦μ κ°μ λ‘ λ°μμν€κ³ λ°λ‘ μ κ±°νλ κ±°μμ.
μΈμ¦ κ°λ β beforeEnter

λ‘κ·ΈμΈ μ ν μνμμ κΈμ°κΈ° νμ΄μ§μ λ°λ‘ μ κ·Όν μ μλ λ¬Έμ κ° μμμ΄μ.
μ΄κ±Έ λ§μμ£Όλ κ² μΈμ¦ κ°λμ
λλ€.
util/guards.js νμΌμ λ§λ€κ³ isAuthenticated ν¨μλ₯Ό μ μνμ΄μ.
export function isAuthenticated(to, from) {
const authStore = useAuthStore()
if (authStore.isAuthenticated) return
return {
name: 'login',
query: { next: to.name }
}
}λ‘κ·ΈμΈμ΄ λμ΄ μμΌλ©΄ κ·Έλ₯ ν΅κ³Ό, μ λμ΄ μμΌλ©΄ λ‘κ·ΈμΈ νμ΄μ§λ‘ 보λ΄λ©΄μ next 쿼리μ μλ λͺ©μ μ§λ₯Ό λ΄μμ.
λ‘κ·ΈμΈ μ±κ³΅ ν μλ νμ΄μ§λ‘ μ΄λ

κ°λλ§ λ§λ€λ©΄ λμ΄ μλμμ. λ‘κ·ΈμΈ μ±κ³΅ νμ μλ κ°λ €λ νμ΄μ§λ‘ λμκ°λ μ²λ¦¬λ μ§μ ν΄μ€μΌ ν©λλ€.
const next = route.query.next
if (next) {
router.push({ name: next })
} else {
router.push({ name: 'home' })
}next μΏΌλ¦¬κ° μμΌλ©΄ κ±°κΈ°λ‘, μμΌλ©΄ νμΌλ‘ κ°λ ꡬ쑰μμ.
κ°λλ 체ν¬λ§ ν΄μ€ λΏ, λ‘κ·ΈμΈ μ΄ν νλ¦μ κ°λ°μκ° μ§μ ꡬμ±ν΄μΌ νλ€λ μ μ΄ μΈμμ μ΄μμ΅λλ€.

μ΄λ² μ£Όλ μμ κΈ°λ₯λΆν° μΈμ¦ μ²λ¦¬κΉμ§, μ€μ μλΉμ€μμ λΉμ°νκ² μ°μ΄λ κΈ°λ₯λ€μ μ§μ λ§λ€μ΄λ΄€μ΄μ.
λΉμ°νκ² μ°λ κ² μ΄λ κ² λ§λ€μ΄μ§λ κ±°μꡬλ μΆμμ΅λλ€.
λ€μ κΈ λΆν°λ νλ‘μ νΈ νκΈ°λ₯Ό μΈκ±΄λ°μ!
λ²μ¨λΆν° λ무 μ€λ κ³ λ¨λ¦½λλ€!γ
γ
γ
λ€μ κΈλ λ§μ΄ κΈ°λν΄μ£ΌμΈμ
μ½μ΄μ£Όμ
μ κ°μ¬ν©λλ€ π
