• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 React 게시판 Reduxtookit 질문 드립니다.

Reduxtookit 질문 드립니다.

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #35583

    강병민
    참가자

    App2.jsx

    `

    import React, { createContext, useContext, useState } from "react";
    import { Navigate, BrowserRouter, Route, Routes } from "react-router-dom";
    import { useSelector, useDispatch } from "react-redux";
    import setId from "./Store.js";

    const App2 = () => {
      const id = useSelector((state) => state.id);
      return (
        <BrowserRouter>
          {id ? (
            <Routes>
              <Route path="/" element={<Hello />} />
              <Route path="*" element={<Navigate to="/" replace />} />
            </Routes>
          ) : (
            <Routes>
              <Route path="/register" element={<Form />} />
              <Route path="*" element={<Navigate to="/register" replace />} />
            </Routes>
          )}
        </BrowserRouter>
      );
    };

    const Form = () => {
      const [inputValue, setInputValue] = React.useState("");
      const dispatch = useDispatch();

      const handleChangeId = (e) => {
        setInputValue(e.target.value);
      };

      return (
        <div>
          <input
            data-testid="id-input"
            type="text"
            name="id"
            value={inputValue}
            onChange={handleChangeId}
          />
          <button type="button" onClick={dispatch(setId(inputValue))}>
            회원가입
          </button>
        </div>
      );
    };

    const Hello = () => {
      const id = useSelector((state) => state.id);
      const dispatch = useDispatch();

      return (
        <>
          <div>안녕하세요 {id}님!</div>
          <button type="button" onClick={dispatch(setId(""))}>
            로그아웃
          </button>
        </>
      );
    };

    export default App2;

    `

     

     

    Store.js

    `

    import { configureStore, createSlice } from "@reduxjs/toolkit";

    const id = createSlice({
      name: "id",
      initialState: "",
      reducers: {
        setId(state, action) {
          return (state = action.payload);
        },
      },
    });

    export let { setId } = id.actions;

    export default configureStore({
      reducer: {
        id: id.reducer,
      },
    });

    `

     

    index.tsx

    `

    import React from "react";
    import ReactDOM from "react-dom/client";
    import "./index.css";
    import App from "./App";
    import App2 from "./App2";
    import reportWebVitals from "./reportWebVitals";
    import Context from "./Context.jsx";
    import Redux from "./Redux.jsx";
    import { Provider } from "react-redux";
    import store from "./Store";

    const root = ReactDOM.createRoot(
      document.getElementById("root") as HTMLElement
    );
    root.render(
      <Provider store={store}>
        <App2 />
      </Provider>
    );

    // If you want to start measuring performance in your app, pass a function
    // to log results (for example: reportWebVitals(console.log))
    // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
    reportWebVitals();

    `

    이 코드에서 회원 가입 버튼을 누르면 다음 화면으로 넘어가질 않는데,, 어디가 잘못 작성된 건지 모르겠습니다 ㅠㅠ

    #35598

    codingapple
    키 마스터

    redux state변경함수는 return 오른쪽에 있는 자료로 기존 state를 대체해줍니다 

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠