728x90
๐ฌ์ค๋ฌด์์ ํด๋ฆฐ์ฝ๋๋? = ์ ์ง๋ณด์ ์๊ฐ์ ๋จ์ถ
- ํ๋ฆ ํ์ ์ด ์ด๋ ต๊ณ
- ๋๋ฉ์ธ ๋งฅ๋ฝ ํํ์ด ์ ๋์ด
- ๋๋ฃ์๊ฒ ๋ฌผ์ด๋ด์ผ ์ ์ ์๋ ์ฝ๋
๐ฌ๊ธฐ์กด ์ฝ๋ ํ์
function QuestionPage(){
const [popupOpened, setPopupOpened] = useState(false); // ์ถ๊ฐ์ฝ๋
async function handleQuestionSubmit(){
// ์ถ๊ฐ์ฝ๋ start
const ์ฐ๊ฒฐ์ ๋ฌธ๊ฐ = await ์ฐ๊ฒฐ์ ๋ฌธ๊ฐ_๋ฐ์์ค๊ธฐ();
if(์ฐ๊ฒฐ์ ๋ฌธ๊ฐ !== null){
setPopupOpened(true);
}
// ์ถ๊ฐ์ฝ๋ end
const ์ฝ๊ด๋์ = await ์ฝ๊ด๋์_๋ฐ์์ค๊ธฐ();
if(!์ฝ๊ด๋์){
await ์ฝ๊ด๋์_๋ฐ์์ค๊ธฐ();
}
await ์ง๋ฌธ์ ์ก(questionValue);
alert("์ง๋ฌธ์ด ๋ฑ๋ก๋์์ด์.");
}
async function handleMyExpertQuestionSubmit(){
await ์ฐ๊ฒฐ์ ๋ฌธ๊ฐ_์ง๋ฌธ์ ์ก(questionValue, ์ฐ๊ฒฐ์ ๋ฌธ๊ฐ.id);
alert(`${์ฐ๊ฒฐ์ ๋ฌธ๊ฐ.name}์๊ฒ ์ง๋ฌธ์ด ๋ฑ๋ก๋์์ด์.`);
}
return {
<main>
<form>
<textarea palceholder="์ด๋ค ๋ด์ฉ์ด ๊ถ๊ธํ๊ฐ์?"/>
<Button onClick={handleQuestionSubmit}>์ง๋ฌธํ๊ธฐ</Button>
</form>
</main>
}
๋ฌธ์ 1. ํ๋์ ๋ชฉ์ ์ธ ์ฝ๋๊ฐ ํฉ๋ฟ๋ ค์ ธ ์๋ค.
๋ฌธ์ 2. ํ๋์ ํจ์๊ฐ ์ฌ๋ฌ ๊ฐ์ง ์ผ์ ํ๊ณ ์๋ค.
์ธ๋ถ ๊ตฌํ์ ๋ชจ๋ ์ฝ์ด์ผ ํจ์์ ์ญํ ์ ์ ์ ์๊ฒ ๋๋ค.
๋ฌธ์ 3. ํจ์์ ์ธ๋ถ ๊ตฌํ ๋จ๊ณ๊ฐ ์ ๊ฐ๊ฐ์ด๋ค.
๐ฌ์ฝ๋ ๋ฆฌํฉํ ๋ง V1
๋ฌธ์ 3. ํจ์์ ์ธ๋ถ ๊ตฌํ ๋จ๊ณ๊ฐ ์ ๊ฐ๊ฐ์ด๋ค. → ํจ์์ ์ธ๋ถ ๊ตฌํ ๋จ๊ณ ํต์ผ (์ถ์ํ)
async function handleNewExpertQuestionSubmit(){
await ์ง๋ฌธ์ ์ก(questionValue);
alert("์ง๋ฌธ์ด ๋ฑ๋ก๋์์ด์.");
}
async function handleMyExpertQuestionSubmit(){
await ์ฐ๊ฒฐ์ ๋ฌธ๊ฐ_์ง๋ฌธ์ ์ก(questionValue, ์ฐ๊ฒฐ์ ๋ฌธ๊ฐ.id);
alert(`${์ฐ๊ฒฐ์ ๋ฌธ๊ฐ.name}์๊ฒ ์ง๋ฌธ์ด ๋ฑ๋ก๋์์ด์.`);
}
๋ฌธ์ 1. ํ๋์ ๋ชฉ์ ์ธ ์ฝ๋๊ฐ ํฉ๋ฟ๋ ค์ ธ ์๋ค. → ํ๋์ ๋ชฉ์ ์ธ ์ฝ๋๋ ๋ญ์ณ๋๊ธฐ (์์ง)
return(
<main>
<form>
<textarea placeholder="์ด๋ค ๋ด์ฉ์ด ๊ถ๊ธํ๊ฐ์?" />
{์ฐ๊ฒฐ์ ๋ฌธ๊ฐ.connected ? (
<PopupTriggerButton
popup={(
<์ฐ๊ฒฐ์ ๋ฌธ๊ฐํ์
onButtonSubmit={handleMyExpertQuestionSubmit} />
)}
>
์ง๋ฌธํ๊ธฐ </PopupTriggerButton>
) : ( ... )
</form>
</main>
๋ฌธ์ 2. ํ๋์ ํจ์๊ฐ ์ฌ๋ฌ ๊ฐ์ง ์ผ์ ํ๊ณ ์๋ค. → ํจ์๊ฐ ํ ๊ฐ์ง ์ผ๋ง ํ๋๋ก ์ชผ๊ฐ๊ธฐ (๋จ์ผ์ฑ ์)
: <Button onClick={async() => {
await openPopupToNotAgreedUsers();
await handleMyExpertQuestionSubmit();
}}
>
์ง๋ฌธํ๊ธฐ
</Button>
...
async function openPopupToNotAgreedUsers(){
const ์ฝ๊ด๋์ = await ์ฝ๊ด๋์_๋ฐ์์ค๊ธฐ();
if(!์ฝ๊ด๋์) {
await ์ฝ๊ด๋์_ํ์
์ด๊ธฐ();
}
}
*ํ์ดํ ํจ์์ ๊ธฐ๋ณธ ๊ตฌ์กฐ
(arg1, args, ...) => { ... }
๐ฌ์ฝ๋ ๋ฆฌํฉํ ๋ง V2
function QuestionPage(){
const [openPopup] = usePopup();
async function handleClick() {
const confirmed = await openPopup({
title: "๋ณดํ ์ง๋ฌธํ๊ธฐ",
contents: <div>์ ๋ฌธ๊ฐ๊ฐ ์ค๋ช
๋๋ ค์</div>,
});
if(confirmed){
await submitQuestion();
}
}
async funcion submitQuestion(์ฐ๊ฒฐ์ ๋ฌธ๊ฐ){
await ์ง๋ฌธ์ ์ก(์ฐ๊ฒฐ์ ๋ฌธ๊ฐ.id);
alert("์ง๋ฌธ์ ์ ์กํ์ต๋๋ค.");
}
return <button onClick={handleClick}>์ง๋ฌธํ๊ธฐ</button>;
}
๐ฌ์ถ์ฒ
728x90
'๐ป์น(Web)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring (0) | 2024.12.02 |
---|---|
JSP(Jakarta Server Pages) (0) | 2024.12.01 |
Servlet (0) | 2024.12.01 |
[๊ณตํตํ๋ก์ ํธ]5์ฃผ์ฐจ: React Openvidu ๊ตฌํ (0) | 2024.08.11 |
[React]์ด๊ธฐ์ธํ (0) | 2024.07.18 |