Ajax사용법(axios)

작업
진행 상태
진행일시
학습자

[1. ajax 사용법]

1.
React에서 ajax를 사용하기 위해서는 라이브러리가 필요하다! yarn add axios, npm add axios
2.
get요청방벙
a.
get(url).then(성공시).catch(실패시)
b.
then((가져온자료)=> {}),catch(() => {})사이에 콜백함수를 이용해 코드를 작성 할 수 있다.
c.
axios를 쓰시면 JSON을 Object형식으로 자동적으로 바꿔준다
3.
POST 요청
a.
axios.post('서버URL',{ id : 'coddingapple', pw : 1234}).then()
/* eslint-disable */ import React ,{useContext, useState} from 'react'; import {Navbar, Container,Nav, NavDropdown, Button } from 'react-bootstrap'; import './App.css'; import Data from './data.js'; import axios from 'axios'; //라우터 임포트 import {Link, Route, Switch} from 'react-router-dom'; import Detail from './Detail.js'; /* 만약 export한 data가 여러개라면 ex) var name = 'KIM'; var name2 = 'PARK'; import { name, name2 } from './data.js'; 이런식으로 다 써줘야됨 */ /* ㅁ ContextApi만들기 1. React.createContext(); --> 범위를 생성해주는 문법(여기서 범위란? 같은 변수값을 공유할 범위다) 2. 같은 값을 공유할 HTML을 범위로 싸매기 3. <범위.Provider>로 감싸고 value={공유 원하는 값} => <범위.Provider value={공유 원하는 값}> </범위.Provider> 4. 원하는 컴포넌트로가 let 재고 = useContext(범위이름)으로 공유하기 ex) let 재고 = useContext(재고Context); 5. 값을 다른 컴폰너트에 쓰고싶다면 export를 이용하자 => ex) export let 재고Context = React.createContext(); */ export let 재고Context = React.createContext(); function App() { //연습용 데이터가 너무 기니깐 다른파일로 잘라내어 state로 저장하고 데이터바인딩을 해보자 let [shoes, shoes변경] = useState(Data); //상품 재고 표시 let [재고,재고변경] = useState([10,11,12]) return ( <div className="App"> <Navbar bg="light" expand="lg"> <Container> <Navbar.Brand href="#home">ShoeShop</Navbar.Brand> <Navbar.Toggle aria-controls="basic-navbar-nav" /> <Navbar.Collapse id="basic-navbar-nav"> <Nav className="me-auto"> { /* 페이지 이동버튼 만들기 1. 일단 Navbar안의 href를 지우고 <Link to="경로">버튼</Link> */ } <Nav.Link as={Link} to="/">Home</Nav.Link> <Nav.Link as={Link} to="/detail">Detail</Nav.Link> <NavDropdown title="Dropdown" id="basic-nav-dropdown"> <NavDropdown.Item>Action</NavDropdown.Item> <NavDropdown.Item href="#action/3.2">Another action</NavDropdown.Item> <NavDropdown.Item href="#action/3.3">Something</NavDropdown.Item> <NavDropdown.Divider /> <NavDropdown.Item href="#action/3.4">Separated link</NavDropdown.Item> </NavDropdown> </Nav> </Navbar.Collapse> </Container> </Navbar> <Switch> <Route exact path="/"> <div className="background"> {/* src안에있는 파일은 경로를 무조건 ./부터 */} <Container> <h1>20% Season OFF</h1> <p> This site offer a biggest sale product in the Korea. We hope you to enjoy here </p> <p> <Button variant="primary">Learn more</Button> </p> </Container> </div> {/* 가로로 3분할 */} <div className="container"> <재고Context.Provider value={재고}> <div className="row"> { shoes.map(function(a, i){ return ( <Card shoes={shoes[i]} i = {i} key={i}/> ) }) } </div> </재고Context.Provider> { /* ajax 사용하기 1. react는 axios를 이용 -> 사용하려면 libray 설치 yarn add axios 2. get요청방법(url).then(성공시).catch(실패시) - axios.get(url).then().catch() - then((가져온자료)=> {}),catch(() => {})사이에 콜백함수를 이용해 코드를 작성 할 수 있다. - axios를 쓰시면 JSON을 Object형식으로 자동적으로 바꿔준다 3.POST 요청 - axios.post('서버URL',{ id : 'coddingapple', pw : 1234}).then() */ } <button className="btn btn-primary" onClick={() => { //POST // axios.post('서버URL',{ id : 'coddingapple', pw : 1234}).then() //로딩중이라는 UI띄움 //axios.get(데이터요청URL) axios.get('https://codingapple1.github.io/shop/data2.json') .then((result) => { //로딩중이라는 UI 안보이게하기 console.log('suceess'); console.log(result.data); shoes변경([...shoes, ...result.data]) }) .catch(() => { console.log('failure'); }) }}>더보기</button> </div> </Route> <Route exact path="/detail/:id"> <재고Context.Provider value={재고}> {/* URL에 파라밑터 문법, 콜론뒤에 맘대로 작명, 여러개 사용가능 ex ) detail/:id/:id2 */} <Detail shoes = {shoes} 재고={재고} 재고변경={재고변경}/> </재고Context.Provider> </Route> <Route path="/:id"> <div>아무거나 적었을 때 이거보여주세요</div> </Route> </Switch> </div> ); } /* Router를 하기위해서는 따로 설치가 필요하다 1. yarn add react-router-dom@5 or npm install react-router-dom@5 (주의 : @5를 붙여야한다 ) 2. index.js 들어가서 설정해주자 (import해주기) -.라우터 셋팅(라이브러리 이름) import { BrowserRouter } from 'react-router-dom'; -.ReactDOM.render에서 아래처럼 써주자 ReactDOM.render( <React.StrictMode> <BrowserRouter> <App /> </BrowserRouter> </React.StrictMode>, document.getElementById('root') ); 3. App.js에서 router를 쓸수있게 import설정해주기 -import {Link, Route, Switch} from 'react-router-dom'; */ function Card(props) { let 재고 = useContext(재고Context); return( <div className="col-md-4"> <img src={"https://codingapple1.github.io/shop/shoes"+(props.i + 1)+".jpg"} width="100%" /> <h4>{props.shoes.title}</h4> <p>{props.shoes.content} & {props.shoes.price}</p> {재고[props.i]} <Test></Test> </div> ) } function Test() { let 재고 = useContext(재고Context); return( <p>재고 : {재고}</p> ) } export default App;
JavaScript
복사