Today, What I learned?
์ ์ ํผ๋๋ฐฑ์ ๋ฐ์ํ์ฌ, ๊ธฐ์กด์ ๊ณต์ ๊ธฐ๋ฅ์์ ์นด์นด์คํก ๊ณต์ ๋ฅผ ์ถ๊ฐํ๊ธฐ๋ก ํ๋ค. (์๋ฌด๋๋ ๋ง์ด ์ฐ์ด๋๊น)
์ด์ ํ๋ก์ ํธ์๋ ๊ตฌํ๋์ด ์๋ ๋ถ๋ถ์ด๋ผ (๋ด๋นํ์ง ์์) ๊ฝค ๋ง์ ์ฐธ๊ณ ๋ฅผ ํ์์๋?..
์กฐ๊ธ ๋ค๋ฅด๊ฒ ์ ์ฉํ๋ ค๋ค ๋ณด๋ ์ค๋ฅ๊ฐ ์ข ๋ฐ์ํด์ ๊ธฐ๋ก..
์ฌ์ ์์
์ผ๋จ ์นด์นด์ค ๋๋ฒจ๋กญ์ค์์ ์ฑ ๋ฑ๋ก๊ณผ ํ๋ซํผ์ ๋๋ฉ์ธ ๋ฑ๋ก์ด ํ์ํ๋ค.
์ฑ์ ๋ฑ๋กํ๋ฉด ์ฑ ํค๋ฅผ ํ์ธํ ์ ์๊ณ , ์ฌ๊ธฐ์ ํ์ํ ๊ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ํค๊ฐ. env ํ์ผ์ ์ถ๊ฐํด ์ฃผ์!
๋ ํ๋ซํผ์์ Web์ ๋๋ฉ์ธ์ ์ถ๊ฐํด ์ค๋ค.
๋๋ ๋ฐฐํฌ์ฃผ์๋ ๋ก์ปฌํธ์คํธ๋ฅผ ์ถ๊ฐํด ์ฃผ์๋ค.
์ถ๊ฐ์ ์ผ๋ก PR์ vercel ํ๋ฆฌ๋ทฐ์์ ํ์ธํ๊ณ ์ถ๋ค๋ฉด ํ๋ฆฌ๋ทฐ ์ฃผ์๋ฅผ ์ถ๊ฐํด์ค์ผ ํ๋ค.
index.html
index.html์ ํค๋ ์์ ์นด์นด์ค ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํด ์ค๋ค.
<script src="https://developers.kakao.com/sdk/js/kakao.js"></script>
d.ts
ํ์
์คํฌ๋ฆฝํธ๋ฅผ ์ฐ๊ณ ์๊ธฐ ๋๋ฌธ์.. KaKao ๊ฐ์ฒด์ ๋ํ ํ์
์ง์ ์ด ํ์ํ๋ค.
Window ๊ฐ์ฒด๋ฅผ ํ์ฅํด์ ์ธํฐํ์ด์ค๋ก ์ ์ํด ์ฃผ๊ธฐ! ์ด๊ฑธ ํ์ง ์๋๋ค๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค ๐
interface Window {
Kakao: any;
}
์นด์นด์ค API ์ด๊ธฐํ
๊ณต์ ํ๊ธฐ ๊ธฐ๋ฅ์ด ๋ค์ด๊ฐ๋ ํ์ด์ง์ useEffect
๋ก ์นด์นด์ค API ์ด๊ธฐํ๋ฅผ ํ ์ ์๋๋ก ๋ฃ์ด์ฃผ์๋ค.
์ฐ๋ฆฌ ํ๋ก์ ํธ์์ ํ์ฌ ์นด์นด์ค API๋ฅผ ์ฐ๋ ๋ถ๋ถ์ ์ฌ๊ธฐ๋ฟ์ด๊ธฐ ๋๋ฌธ์,,
useEffect(() => {
if (!window.Kakao.isInitialized()) {
window.Kakao.init(process.env.REACT_APP_KAKAO_API_KEY);
}
}, []);
์ฒ์์ if๋ฌธ์ ์ ๋ฃ์๋ค๊ฐ, ์ด๋ฏธ ์ด๊ธฐํ๊ฐ ๋์๋ค๋ ์ค๋ฅ๊ฐ ์ฝ์์ ์ฐํ๋ ๊ฑธ ๋ณด๊ณ if๋ฌธ์ ์ถ๊ฐํด ์ฃผ์๋ค.
์ด๋ฒคํธ ํธ๋ค๋ฌ ํจ์ ์ถ๊ฐ
์ด์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ถ๊ฐ!
์นด์นด์ค ๋๋ฒจ๋กญ์ค๋ฅผ ๋ณด๋ฉด Kakao.Share
๋ฅผ ํตํด์ ๊ณต์ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์๋ค.
https://developers.kakao.com/docs/latest/ko/message/js-link#default-template-scrap-msg-default
๋๋ ์ ๋ชฉ, 30์๊น์ง์ ๋ด์ฉ, ์ธ๋ค์ผ์ด ๋ค์ด๊ฐ๋๋ก ํ๋ค. ๋ ๋ง์ ์ต์ ์ด ์์ง๋ง ํ์ํ ๊ฒ์ด ์ด ์ ๋๋ผ ์ฌ๊ธฐ๊น์ง.. ๐
const handleShareKakaoClick = () => {
if (window.Kakao) {
const kakao = window.Kakao;
kakao.Share.sendDefault({
objectType: 'feed',
content: {
title: title,
description: content.substring(0, 30) + '...',
imageUrl:
thumbnail ??
'-๋ํดํธ ์ธ๋ค์ผ-',
link: {
mobileWebUrl: currentURL,
webUrl: currentURL,
},
},
});
}
์ฐ๋ฆฌ ํ๋ก์ ํธ์์๋ ์ธ๋ค์ผ ์ด๋ฏธ์ง๊ฐ ์์ ๊ฒฝ์ฐ ๋ํดํธ ์ด๋ฏธ์ง๋ฅผ ๋ณด์ฌ์ฃผ๋๋ฐ, ์ด ์ด๋ฏธ์ง๋ ๋ก์ปฌ์๋ง ์ ์ฅ๋์ด ์๊ธฐ ๋๋ฌธ์..
๋ํดํธ ์ด๋ฏธ์ง์ ๋ํ ์ด๋ฏธ์ง ํ์ผ URL์ด ํ์ํด์ ์ด๊ฑด ๊ตฌ๊ธ ๋๋ผ์ด๋ธ์ ์ฌ๋ ค ๊ฐ์ ธ์๋ค.
๊ทธ๋ผ ์ด์ ํธ๋ค๋ฌ๋ฅผ onClick ์ด๋ฒคํธ๋ก ๊ฑธ์ด์ฃผ๋ฉด ์ ์ฉ ์.
<ShareKaKaoArea>
<ShareKaKaoBtn onClick={handleShareKakaoClick}>
<KaKaoIconImg src={kakaoIcon} />
</ShareKaKaoBtn>
</ShareKaKaoArea>
๊ณต์ ๋ฒํผ ๋๋ฅด๋ฉด ์ด๋ ๊ฒ ์ ๋์ด๊ฐ๋ค~
์ฐ๊ณ ๋ณด๋ ์๊ฐ๋ณด๋ค ๋ณต์กํ์ง ์์ ๊ฒ ๊ฐ์ ๋๋์ด ๋๋๋ฐ ์ํผ ์ ์ ์ฉ๋์๋ค~
'๐ Studying > ๐ TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Next.js์์ SCSS ์ฌ์ฉํ๊ธฐ (1) | 2023.04.17 |
---|---|
[React] ์๋ก๊ณ ์นจ ์ ์ข์์ ์ ์งํ๊ธฐ (0) | 2023.03.09 |
[React] Input ํ๊ทธ clear ๋ฒํผ ์ฌ๋์ ์ ํ๋ ๋ฒ๊ทธ (0) | 2023.03.06 |
[React] React-query์ staleTime, cacheTime, invalidateQueries (0) | 2023.03.03 |
[React] React.memo๋ก ์ต์ ํํ๊ธฐ (0) | 2023.03.02 |
Comment