κΈ°λ₯ μꡬμ¬νμ 'μ κ³ νκΈ° λ²νΌ ν΄λ¦μ μ κ³ νλ νΌμΌλ‘ μ΄λνκΈ°' μλλ°, μ΄ μ΅μ κΈ°λ₯λ§μ ꡬννκ³ ν μ€νΈν΄λ³΄λ μ¬μ©μ μ μ₯μμ μ κ³ νλ νΌμ νμν μμλ€μ μμ±νκΈ° μν΄μλ κΈ°μ‘΄ νμ΄μ§κ° λ³κ²½λμ§ μλ κ²μ΄ μ¬μ©μ κ²½νμ λ μ’μ κ² κ°μμ΅λλ€.
κ·Έλμ νμλ€κ³Ό λ Όμ ν μ κ³ νλ νΌμ μ νμΌλ‘ μ΄λ¦¬κ² νκ³ , κΈ°μ‘΄ νμ΄μ§λ μ΄λμμ΄ μ μ§νλλ‘νλ©΄μ, κΈ°μ‘΄ κΈ°ν/λμμΈμμ μμλ ν μ€νΈλ μμ νλ λ°©ν₯μΌλ‘ μμ νμ΅λλ€.
μ νμΌλ‘ μ΄λ¦¬κ² νλ κ²μ λ€μ μ½λμ κ°μ΄ μλ°μ€ν¬λ¦½νΈ window κ°μ²΄μ open ν¨μλ‘ κ°λ¨νκ² κ΅¬νν μ μμμ΅λλ€.
'use client'
export default function Page({
params: { userId, messageId },
}: {
params: { userId: string; messageId: string }
}) {
const router = useRouter()
const { mutateAsync } = usePatchMessageStatus()
const changeStatus = async () => {
const redirectURL = 'μͺ½μ§ν¨ 리μ€νΈ url'
const openReportForm = 'μ κ³ νλ ꡬκΈνΌ μ£Όμ'
try {
const response = await mutateAsync({
messageId,
status: 'reported',
})
window.open(openReportForm) // μλ‘μ΄ μ°½μΌλ‘ μ κ³ νΌ μ΄κΈ°
router.push(redirectURL) // μͺ½μ§ν¨ 리μ€νΈλ‘ μ΄λ
if (!response) {
console.error('Reported response is empty: ', response)
router.back()
}
} catch (error) {
console.error('Failed to change status from normal to reported: ', error)
router.back()
}
}
return (
.....
)}
ν¬λ‘¬μμ μ μ΄λ¦¬λ κ±Έ νμΈνλλ° μ΄ν μ¬νλ¦¬λ‘ ν μ€νΈ ν΄λ³΄λ μ νμ΄ μ΄λ¦¬μ§ μμμ΅λλ€. νμ μλ¦Όμ‘°μ°¨λ λ¨μ§ μμ.
MDN λ¬Έμλ₯Ό μ°Ύμ보λ μ¬ν리μμλ click μ΄λ²€νΈκ° λ°μνμ§ 1000msμ΄νμ window.open λ©μλκ° νΈμΆλλ©΄ νμ μ΄ μ°¨λ¨λλ€κ³ ν©λλ€.
μ΄λ€ λΉλκΈ° μμ νμ window.open()μ νΈμΆνλ €κ³ νλ©΄ κ·Έ μ¬μ΄μ μ§μ° λλ¬Έμ λΈλΌμ°μ κ° μ΄λ₯Ό μ¬μ©μκ° μ§μ ν΄λ¦ν κ²μ΄ μλ μ€ν¬λ¦½νΈμ μν΄ μλμΌλ‘ μμ±λ νμ μΌλ‘ μΈμνκ³ μ°¨λ¨ν μ μλ€λ λ΄μ©...
μ¬ν리μμ λΉλκΈ° μ²λ¦¬ νμ window.open()μ νΈμΆνλλ‘ μ νμ λ§λ€κΈ° μν΄μ λ€μ μμλ₯Ό λ°λ₯΄λ κ³Όμ μ΄ νμνμ΅λλ€
- λΉ νμ μ λμ°κ³
- νμν λΉλκΈ°λ₯Ό μννκ³
- λΉ νμ μ location.hrefλ₯Ό λ°κΎΌλ€.
κ·Έλμ κΈ°μ‘΄μ λ¨λ‘± window.open(url) νλ κ²μμ λ€μκ³Ό κ°μ΄ ν¨μλ₯Ό λ§λλ λ°©ν₯μΌλ‘ μμ νμ΅λλ€.
// src/shared/hooks/util/openTabUtil.ts
export const openInNewTab = (url: string) => {
const newWindow = window.open(url, '_blank', 'noopener, popup')
if (newWindow) newWindow.opener = null
}
// src/app/messagebox/[userId]/[type]/[messageId]/report/page.tsx
import { openInNewTab } from '@/shared/hooks/util/openTabUtil'
export default function Page({
params: { userId, messageId },
}: {
params: { userId: string; messageId: string }
}) {
{/* μλ΅ */}
const changeStatus = async () => {
try {
const response = await mutateAsync({
messageId,
status: 'reported',
})
openInNewTab(`μ κ³ νλ νΌ μ£Όμ`)
if (!response) {
router.back()
}
} catch (error) {
router.back()
}
}
return (
{/* μλ΅ */}
)
}
'issue' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μλμΉ μκ² λ³κ²½λ CRLF <=> LF ν΄κ²°νκΈ° (0) | 2025.01.05 |
---|---|
homebrew-core is a shallow clone. (brew) (0) | 2024.10.29 |
λΉλ μ€ svg Module not found error (Next.js) (0) | 2024.10.22 |
νμκ°μ μ μ΄λ©μΌ μΈμ¦ 보μ μ΄μ (api endpoint κ΄λ ¨) (2) | 2024.10.16 |
Git Error: RPC failed; HTTP 400 curl 22 The requested URL returned error: 400 (1) | 2024.10.02 |