Skip to content

Commit 91b9e2c

Browse files
committed
fix: 에러처리를 통한 태그 중복 버그 수정
1 parent 7380f4f commit 91b9e2c

File tree

6 files changed

+27
-16
lines changed

6 files changed

+27
-16
lines changed
Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
11
.error-message {
2-
padding: 12px 18px;
3-
margin: 50px;
4-
background-color: pink;
5-
border-radius: 12px;
6-
font-weight: bold;
2+
color: #f74747;
3+
padding: 6px 8px;
74
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import "./ErrorMessage.style.css";
22

3-
const ErrorMessage = ({ error }) => {
4-
return <div className="error-message">{error.message}</div>;
3+
const ErrorMessage = ({ errorMessage }) => {
4+
return <div className="error-message">{errorMessage}</div>;
55
};
66

77
export default ErrorMessage;

vite-project/src/pages/AddItemPage/components/AddItemTag/index.jsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
const AddItemTag = ({ value, onChange }) => {
1+
import ErrorMessage from "../../../../common/ErrorMessage";
2+
3+
const AddItemTag = ({ value, onChange, error }) => {
24
return (
35
<div>
46
<h4>태그</h4>
@@ -9,6 +11,7 @@ const AddItemTag = ({ value, onChange }) => {
911
value={value}
1012
onChange={onChange}
1113
/>
14+
{error && <ErrorMessage errorMessage={error} />}
1215
</div>
1316
);
1417
};

vite-project/src/pages/AddItemPage/index.jsx

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,15 @@ import TagList from "../../common/TagList";
1010

1111
const AddItemPage = () => {
1212
const [formData, setFormData] = useState({
13-
images: [],
14-
name: "",
15-
description: "",
16-
price: "",
17-
tags: [],
13+
images: [], // required 지만 빈 배열이어도 되는듯
14+
name: "", // required
15+
description: "", // required
16+
price: "", // required
17+
tags: [], // required
1818
});
1919

2020
const [inputValueTag, setInputValueTag] = useState("");
21+
const [errors, setErrors] = useState({ image: "", tag: "" }); // POST요청 에러까지 추후에 들어갈지도
2122

2223
const handleChange = (e, category) => {
2324
setFormData((prev) => ({ ...prev, [category]: e.target.value }));
@@ -30,12 +31,21 @@ const AddItemPage = () => {
3031

3132
const handleSubmitTag = (e) => {
3233
e.preventDefault();
34+
3335
if (!inputValueTag) {
36+
setErrors((prev) => ({ ...prev, tag: "태그를 입력하세요" }));
3437
return;
3538
}
39+
40+
if (formData.tags.includes(inputValueTag)) {
41+
setErrors((prev) => ({ ...prev, tag: "태그가 이미 존재합니다" }));
42+
return;
43+
}
44+
3645
const newTags = [...formData.tags, inputValueTag];
3746
setFormData((prev) => ({ ...prev, tags: newTags }));
3847
setInputValueTag("");
48+
setErrors((prev) => ({ ...prev, tag: "" }));
3949
};
4050

4151
const handleDeleteTag = (index) => {
@@ -47,7 +57,7 @@ const AddItemPage = () => {
4757
<div className="addItem-page-layout">
4858
<form className="addItem-form" onSubmit={handleSubmitAddItem}>
4959
<AddItemFormHeader />
50-
<AddItemImage images={formData.images} />
60+
<AddItemImage images={formData.images} error={errors.image} />
5161
<AddItemName
5262
value={formData.name}
5363
onChange={(e) => handleChange(e, "name")}
@@ -66,6 +76,7 @@ const AddItemPage = () => {
6676
<AddItemTag
6777
value={inputValueTag}
6878
onChange={(e) => setInputValueTag(e.target.value)}
79+
error={errors.tag}
6980
/>
7081
</form>
7182

vite-project/src/pages/ItemsPage/components/ProductAll/index.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ const ProductAll = () => {
3434

3535
if (isLoading) return <LoadingSpinner />;
3636

37-
if (isError) return <ErrorMessage error={error} />;
37+
if (isError) return <ErrorMessage errorMessage={error.message} />;
3838
return (
3939
<>
4040
<ProductAllMenuBar

vite-project/src/pages/ItemsPage/components/ProductBest/index.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const ProductBest = () => {
1818

1919
if (isLoading) return <LoadingSpinner />;
2020

21-
if (isError) return <ErrorMessage error={error} />;
21+
if (isError) return <ErrorMessage errorMessage={error.message} />;
2222
return (
2323
<div className="productBest-layout">
2424
<h1 className="product-category-description">베스트 상품</h1>

0 commit comments

Comments
 (0)