diff --git a/src/components/button/toggle-button.jsx b/src/components/button/toggle-button.jsx
index 03a6643..cf805d2 100644
--- a/src/components/button/toggle-button.jsx
+++ b/src/components/button/toggle-button.jsx
@@ -27,22 +27,28 @@ const ToggleItem = styled.button`
}
`;
-function ToggleButton({ value, options = [] }) {
+function ToggleButton({ value, options = [], onChange }) {
const [selected, setSelected] = useState(value);
- const handleOptionClick = (event) => {
- setSelected(event.target.textContent);
+ const handleOptionClick = (option, index) => {
+ setSelected(option);
+
+ if (onChange) {
+ onChange(option, index);
+ }
};
return (
- {options.map((title, index) => (
+ {options.map((option, index) => (
+ handleOptionClick(event.target.textContent, index)
+ }
>
- {title}
+ {option}
))}
diff --git a/src/pages/create-post-page.jsx b/src/pages/create-post-page.jsx
index b5f15cb..e78bcc7 100644
--- a/src/pages/create-post-page.jsx
+++ b/src/pages/create-post-page.jsx
@@ -1,13 +1,12 @@
import { useState } from "react";
-import TextField from "../components/text-field/text-field";
-import TEXT_FIELD_TYPE from "../components/text-field/text-field-type";
-import Colors from "../components/color/colors";
-import ToggleButton from "../components/button/toggle-button";
+import { useNavigate } from "react-router";
import styled from "styled-components";
import { PrimaryButton } from "../components/button/button";
-import BackgroundSelect from "../components/option/background-select";
-import { useNavigate } from "react-router";
import BUTTON_SIZE from "../components/button/button-size";
+import ToggleButton from "../components/button/toggle-button";
+import BackgroundSelect from "../components/option/background-select";
+import TextField from "../components/text-field/text-field";
+import TEXT_FIELD_TYPE from "../components/text-field/text-field-type";
import { media } from "../utils/media";
const PostContainer = styled.div`
@@ -61,10 +60,17 @@ const CreateButton = styled(PrimaryButton)`
width: 100%;
`;
+const TOGGLE_OPTIONS = ["컬러", "이미지"];
+
+const SELECT_TYPE = {
+ 컬러: "color",
+ 이미지: "image",
+};
+
function CreatePostPage() {
const [name, setName] = useState("");
const [nameError, setNameError] = useState("");
- const [backgroundType, setBackgroundType] = useState("컬러");
+ const [backgroundType, setBackgroundType] = useState(TOGGLE_OPTIONS[0]);
const [selected, setSelected] = useState(0);
const navigate = useNavigate();
@@ -83,15 +89,6 @@ function CreatePostPage() {
}
};
- const handleBackgroundSelect = (e) => {
- let typeSelect = e.target.textContent;
-
- if (typeSelect === "컬러" || typeSelect === "이미지") {
- setBackgroundType(typeSelect);
- setSelected(0);
- }
- };
-
const handleCreate = () => {
const randomID = Math.floor(Math.random() * 10000);
navigate(`/post/${randomID}`);
@@ -99,6 +96,11 @@ function CreatePostPage() {
const canCreate = trimmed !== "";
+ const handleToggleChange = (option) => {
+ setBackgroundType(option);
+ setSelected(0);
+ };
+
return (
@@ -117,19 +119,16 @@ function CreatePostPage() {
컬러를 선택하거나, 이미지를 선택할 수 있습니다.
-
+
{
- handleBackgroundSelect(type);
- setSelected(0);
- }}
+ options={TOGGLE_OPTIONS}
+ onChange={handleToggleChange}
/>
diff --git a/src/tests/test-components-page.jsx b/src/tests/test-components-page.jsx
index 2a5444f..96bbb2a 100644
--- a/src/tests/test-components-page.jsx
+++ b/src/tests/test-components-page.jsx
@@ -31,6 +31,11 @@ const OutlinedHeader = styled(Header)`
`;
function TestComponentsPage() {
+ /* Toggle Button */
+ const handleToggleChange = (option, index) => {
+ console.log(option, index);
+ };
+
/* Dropdown type TextField */
const [option1, setOption1] = useState();
const [option2, setOption2] = useState();
@@ -140,8 +145,15 @@ function TestComponentsPage() {
gap: 16,
}}
>
-
-
+
+