Closed jellyjoji closed 1 year ago
작성된 코드에는 다음의 표준/접근성 문제를 가집니다. 현 단계에서 개발에도 힘든 사정을 알고 있으므로 수정을 요구하지는 않겠습니다. 하지만 이러한 문제가 있음을 기억하세요. 현업에서 요구시에는 반드시 수정해야 합니다.
data-payment
속성을 설정합니다.PaymentToggleButton.jsx
import { forwardRef, useState, useId } from 'react';
function PaymentToggleButton({ labelClassName, title }, ref) {
const [isToggled, setToggled] = useState(false);
const id = useId();
return (
<>
<label htmlFor='id' className={labelClassName}>{title}</label>
<div id='id' className="bg-greenishgray-200 w-full p-2 rounded-lg">
<button
ref={ref}
type="button"
className="w-full rounded-lg "
onClick={() => setToggled(!isToggled)}
data-payment={isToggled ? '계좌 이체' : '만나서 결제'}
>
<div
className={`flex w-full ${isToggled ? 'items-center' : ''}`.trim()}
>
<div
className={`w-1/2 ${isToggled ? 'shadow-lg bg-white rounded-lg' : ''
}`.trim()}
>
계좌 이체
</div>
<div
className={`w-1/2 ${!isToggled ? 'shadow-lg bg-white rounded-lg' : ''
}`.trim()}
>
만나서 결제
</div>
</div>
</button>
</div>
</>
);
}
export default forwardRef(PaymentToggleButton);
폼에서 결제 수단 정보를 가져오려면 코드를 아래와 같이 수정합니다. ([데이터 속성 사용하기](https://developer.mozilla.org/ko/docs/Learn/HTML/Howto/Use_data_attributes) 참고)
CreateRoom.jsx
const paymentValue = paymentRef.current**.dataset.payment**;
console.log(paymentValue); // '계좌 이체' or '만나서 결제'
내용
아래와 같은 형태의 토글 버튼을 구현 중입니다.
둘중 하나의 버튼을 눌렀을때 선택된 결과값을 뽑아내서 form data 에 전송해야합니다.
(현재는 “계좌 이체 만나서 결제” 이렇게 두개 모두 출력되는 상황입니다. “계좌 이체” 혹은 “만나서 결제” 둘중 하나가 출력되도록 하고 싶습니다.)
PaymentToggleButton.jsx
function PaymentToggleButton({ labelClassName, title, }, ref) { const [isToggled, setToggled] = useState(false); return ( <>
); };
export default forwardRef(PaymentToggleButton);