Skip to content

Commit 9fe9a81

Browse files
committed
feat: 가격 input 천단위 콤마 추가
1 parent cbcb2c0 commit 9fe9a81

File tree

3 files changed

+21
-9
lines changed

3 files changed

+21
-9
lines changed

src/components/pages/AddItemPage/AddItemPage.jsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,13 @@ import { useState } from 'react';
44
import InputField from '../../UI/InputField';
55
import ImageUpload from '../../UI/ImageUpload';
66
import TagInput from '../../UI/Taginput';
7+
import useFormatNumber from '../../../hooks/useFormatNumber';
78
import { ColorTypes } from '../../../styles/theme';
89

910
function AddItemPage() {
1011
const [name, setName] = useState('');
1112
const [description, setDescription] = useState('');
12-
const [price, setPrice] = useState('');
13+
const [price, handlePriceChange] = useFormatNumber('');
1314
const [tags, setTags] = useState([]);
1415

1516
const isDisabled = name.trim() && description.trim() && price.trim() && tags.length > 0;
@@ -47,11 +48,11 @@ function AddItemPage() {
4748
/>
4849
<InputField
4950
label="판매 가격"
50-
type="number"
51+
type="text"
5152
placeholder="판매 가격을 입력해주세요"
5253
isTextArea={false}
5354
value={price}
54-
onChange={(e) => setPrice(e.target.value)}
55+
onChange={handlePriceChange}
5556
/>
5657
<TagInput
5758
tags={tags}

src/hooks/useFormatNumber.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { useState } from 'react';
2+
3+
export default function useFormatNumber(initialValue = '') {
4+
const [value, setValue] = useState(initialValue);
5+
6+
// 천단위 콤마 함수
7+
const formatNumber = (value) => {
8+
const onlyNumber = value.replace(/[^0-9]/g, '');
9+
return onlyNumber.replace(/\B(?=(\d{3})+(?!\d))/g, ',');
10+
};
11+
12+
const handleChange = (e) => {
13+
setValue(formatNumber(e.target.value));
14+
};
15+
16+
return [value, handleChange];
17+
}

src/styles/GlobalStyle.js

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,6 @@ const GlobalStyle = createGlobalStyle`
7979
textarea {
8080
resize: none;
8181
}
82-
83-
input[type='number']::-webkit-outer-spin-button,
84-
input[type='number']::-webkit-inner-spin-button {
85-
-webkit-appearance: none;
86-
margin: 0;
87-
}
8882
`;
8983

9084
export default GlobalStyle;

0 commit comments

Comments
 (0)