From 5889d6a7ad49660e906e54f3e2873a8cce6908d0 Mon Sep 17 00:00:00 2001 From: somfist Date: Fri, 29 Jul 2022 23:52:09 +0900 Subject: [PATCH 1/2] =?UTF-8?q?Pull=20=EC=A0=84=20=EC=9E=84=EC=8B=9C=20?= =?UTF-8?q?=EC=A0=80=EC=9E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 ++ src/redux/configStore.js | 13 +++++++--- src/redux/modules/note.js | 2 +- src/redux/modules/user.js | 51 +++++++++++++++++++++++++++------------ yarn.lock | 24 +++++++++++++++++- 5 files changed, 72 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 14716a6..2976450 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "@testing-library/react": "^13.0.0", "@testing-library/user-event": "^13.2.1", "@toast-ui/react-editor": "^3.1.8", + "axios": "^0.27.2", "react": "^18.2.0", "react-bootstrap": "^2.4.0", "react-dom": "^18.2.0", @@ -21,6 +22,7 @@ "react-router-dom": "5.3.0", "react-scripts": "5.0.1", "redux": "^4.2.0", + "redux-thunk": "^2.4.1", "remark-gfm": "^3.0.1", "styled-components": "^5.3.5", "web-vitals": "^2.1.0" diff --git a/src/redux/configStore.js b/src/redux/configStore.js index 6abb641..85adbec 100644 --- a/src/redux/configStore.js +++ b/src/redux/configStore.js @@ -1,7 +1,14 @@ -import {createStore, combineReducers} from 'redux'; +import {createStore, combineReducers, applyMiddleware} from 'redux'; import note from './modules/note' +import user from './modules/user' -const rootReducer = combineReducers({note}); -const store = createStore(rootReducer); +// 미들웨어용 +import thunk from "redux-thunk" + +const middlewares = [thunk]; +const rootReducer = combineReducers({note, user}); +const enhancer = applyMiddleware(...middlewares); // 걍 thunk 적어도됨 + +const store = createStore(rootReducer, enhancer); export default store; \ No newline at end of file diff --git a/src/redux/modules/note.js b/src/redux/modules/note.js index 83f91f6..53d4d5e 100644 --- a/src/redux/modules/note.js +++ b/src/redux/modules/note.js @@ -3,7 +3,7 @@ const initialNote = [ { "author": '작성자', "title": '노트 제목1', - "context":

노트의 내용1

, + "context":
노트의 내용1
, "series": '시리즈', "createdAt": '0000-00-00', "updatedAt": '0000-00-00' diff --git a/src/redux/modules/user.js b/src/redux/modules/user.js index f804aaf..6422da2 100644 --- a/src/redux/modules/user.js +++ b/src/redux/modules/user.js @@ -1,18 +1,39 @@ -// const userState = 'user/state'; -// const init = false; -// export function createNote(login) { -// return { type: userState, login }; -// } +const LOGIN = "user/LOGIN" +const REGISTER = "user/REGISTER"; +const initialState = {} +export function loginUser(user){ + return {type: LOGIN, user}; + } + + export function registerUser (user){ + return {type: REGISTER, user}; + } -// // Reducer -// export default function reducer(state = initialNote, action = {}) { -// switch (action.type) { -// case 'note/CREATE': { -// const new_note_list = [...initialNote, action.note]; -// return new_note_list; -// } -// default: return state; -// } -// } \ No newline at end of file + export const loginFB = () => { + return async function (dispatch) { + + dispatch(loginUser()); + } + } + + export const registerFB = (user) => { + return async function (dispatch) { + + dispatch(registerUser()); + } + } + + export default function reducer(state = initialState, action = {}) { + switch (action.type) { + case "user/LOGIN": { + return state; + } + case "user/REGISTER": { + return state; + } + default: + return state; + } + } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index f8b98c2..0206a76 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2747,6 +2747,14 @@ axe-core@^4.4.3: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f" integrity sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w== +axios@^0.27.2: + version "0.27.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" + integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== + dependencies: + follow-redirects "^1.14.9" + form-data "^4.0.0" + axobject-query@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" @@ -4612,7 +4620,7 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.6.tgz#022e9218c637f9f3fc9c35ab9c9193f05add60b2" integrity sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ== -follow-redirects@^1.0.0: +follow-redirects@^1.0.0, follow-redirects@^1.14.9: version "1.15.1" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== @@ -4645,6 +4653,15 @@ form-data@^3.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -8308,6 +8325,11 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" +redux-thunk@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.4.1.tgz#0dd8042cf47868f4b29699941de03c9301a75714" + integrity sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q== + redux@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.0.tgz#46f10d6e29b6666df758780437651eeb2b969f13" From e27baa7ae44ea1596e0bc3d98d6204224ab99f6f Mon Sep 17 00:00:00 2001 From: somfist Date: Sat, 30 Jul 2022 10:03:46 +0900 Subject: [PATCH 2/2] =?UTF-8?q?30=EC=9D=BC=20axios=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 + src/components/Register/Register.jsx | 16 +++++++++++-- src/redux/configStore.js | 2 +- src/redux/modules/note.js | 2 +- src/redux/modules/user.js | 36 +++++++++++++++++----------- yarn.lock | 5 ++++ 6 files changed, 44 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index 2976450..c5112b4 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "react-router-dom": "5.3.0", "react-scripts": "5.0.1", "redux": "^4.2.0", + "redux-persist": "^6.0.0", "redux-thunk": "^2.4.1", "remark-gfm": "^3.0.1", "styled-components": "^5.3.5", diff --git a/src/components/Register/Register.jsx b/src/components/Register/Register.jsx index 683bb48..b2d8451 100644 --- a/src/components/Register/Register.jsx +++ b/src/components/Register/Register.jsx @@ -2,12 +2,15 @@ import Button from 'react-bootstrap/Button'; import Form from 'react-bootstrap/Form'; import './style.css' import React from 'react'; +import {useDispatch} from 'react-redux' +import { registerUser } from '../../redux/modules/user'; export default function Register(props) { let emailRef = React.useRef(null); let nameRef = React.useRef(null); let pwRef = React.useRef(null); let pwRef2 = React.useRef(null); + const dispatch = useDispatch() const characterCheck=(obj)=>{ let regExp; @@ -23,7 +26,6 @@ export default function Register(props) { } const isPassword=(obj)=>{ - console.log(obj.current.value) var regExp = /^(?=.*\d)(?=.*[a-zA-Z])[0-9a-zA-Z]{8,30}$/; if(obj.current.value.length>1 && !regExp.test(obj.current.value)){ obj.current.focus(); @@ -40,6 +42,16 @@ export default function Register(props) { } } + function submitHandler(event) { + event.preventDefault() + const newUser = { + email: emailRef.current.value, + nickname: nameRef.current.value, + password: pwRef2.current.value + } + dispatch(registerUser(newUser)) + } + return ( <>
@@ -121,7 +133,7 @@ export default function Register(props) { className='mt-5' variant="dark" type="submit" - onClick={props.userToggle} + onClick={submitHandler} > 회원가입 diff --git a/src/redux/configStore.js b/src/redux/configStore.js index 85adbec..e914a18 100644 --- a/src/redux/configStore.js +++ b/src/redux/configStore.js @@ -7,7 +7,7 @@ import thunk from "redux-thunk" const middlewares = [thunk]; const rootReducer = combineReducers({note, user}); -const enhancer = applyMiddleware(...middlewares); // 걍 thunk 적어도됨 +const enhancer = applyMiddleware(...middlewares) const store = createStore(rootReducer, enhancer); diff --git a/src/redux/modules/note.js b/src/redux/modules/note.js index 83f6383..52af0c8 100644 --- a/src/redux/modules/note.js +++ b/src/redux/modules/note.js @@ -3,7 +3,7 @@ const initialNote = [ { "author": '작성자', "title": '노트 제목1', - "context":
노트의 내용1
, + "content":
노트의 내용1
, "series": '시리즈', "createdAt": '0000-00-00', "updatedAt": '0000-00-00' diff --git a/src/redux/modules/user.js b/src/redux/modules/user.js index 6422da2..ba27fc9 100644 --- a/src/redux/modules/user.js +++ b/src/redux/modules/user.js @@ -1,29 +1,37 @@ -const LOGIN = "user/LOGIN" +import Axios from "axios"; + +const LOGIN = "user/LOGIN"; const REGISTER = "user/REGISTER"; const initialState = {} -export function loginUser(user){ +export function loginAction(user){ return {type: LOGIN, user}; - } +} - export function registerUser (user){ - return {type: REGISTER, user}; - } +export function registerAction (user){ + return {type: REGISTER, user}; +} - export const loginFB = () => { +export const loginUser = () => { return async function (dispatch) { - - dispatch(loginUser()); + dispatch(loginUser()); } - } +} - export const registerFB = (user) => { +export const registerUser = (user) => { + console.log(user) return async function (dispatch) { - - dispatch(registerUser()); + try { + let test = await Axios.post("/register", user) + // let test = await Axios.get("https://jsonplaceholder.typicode.com/users") + console.log(test.data) + } + catch(e) { + console.log(e) + } } - } +} export default function reducer(state = initialState, action = {}) { switch (action.type) { diff --git a/yarn.lock b/yarn.lock index 0206a76..f66bf9e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8325,6 +8325,11 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" +redux-persist@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/redux-persist/-/redux-persist-6.0.0.tgz#b4d2972f9859597c130d40d4b146fecdab51b3a8" + integrity sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ== + redux-thunk@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.4.1.tgz#0dd8042cf47868f4b29699941de03c9301a75714"