구현 하기 전:
통합 검색 기능을 구현하려면 다양한 검색 키워드에 대해 처리해야 합니다. 주어진 Cafe 클래스의 필드를 기반으로 검색 기능을 구현할 수 있습니다. 여기에는 카페이름, 지역, 해시태그 등이 포함됩니다. 아래는 각각의 검색 조건에 대한 구현 방법에 대한 예시입니다.
카페이름으로 검색하기:
사용자가 입력한 카페이름을 기준으로 Cafe 객체의 name 필드를 검색합니다.
예를 들어, 사용자가 "스타벅스"라고 입력했다면, 모든 Cafe 객체 중에서 name이 "스타벅스"인 항목을 찾습니다.
지역으로 검색하기:
사용자가 입력한 지역 정보를 기준으로 Cafe 객체의 address 필드를 검색합니다.
예를 들어, 사용자가 "서울"이라고 입력했다면, 모든 Cafe 객체 중에서 address에 "서울"이 포함된 항목을 찾습니다.
해시태그로 검색하기:
사용자가 입력한 해시태그를 기준으로 Cafe 객체의 hashtag 필드를 검색합니다.
예를 들어, 사용자가 "#디저트"라고 입력했다면, 모든 Cafe 객체 중에서 hashtag에 "#디저트"가 포함된 항목을 찾습니다.
이러한 검색 기능을 구현하려면 검색어를 받아들이고, 각 검색 조건에 따라 Cafe 객체 목록을 필터링하여 결과를 반환하는 메서드가 필요합니다. 이러한 메서드를 검색 서비스 클래스에 구현하고, 이를 호출하여 사용자의 검색 요청에 대한 결과를 제공할 수 있습니다.
왜?
웹 페이지는 이동시 특유의 깜빡거림이 있다.
그런데 모바일 앱은 그렇지 않다.
리액트는 모바일 앱 같은 웹을 만들 수 있다.
고품질의 웹 사이트 제작 가능.
모바일 앱도 제작 가능
기업입장에서는 비용절감
Setting -> JavaScript Preprocessor -> Babel 선택 -> Save & Close
<div id="root"></div>
console.clear();
// 리액트를 쓸 수 있는 환경
import React from "https://cdn.skypack.dev/react@18";
import ReactDOM from "https://cdn.skypack.dev/react-dom@18";
// function App(){}
const App = () => {
return "배고팡";
};
ReactDOM.render(<App />, document.getElementById("root"));
return (
<>
<div>현재 숫자 : {num}</div>
<button onClick={() => {
setNum(num + 1);
}}>버튼</button>
</>
);
return (
<>
<div>숫자 : {num}</div>
</>
);
return (
<div style={{ color: 'skyblue' }}>안녕</div>
</div>
);
인라인 안에 작성
const Square = () => {
return (
<div style={{
width: "200px",
height: "200px",
backgroundColor: "red",
display: "flex",
alignItems: "center",
fontWeight: "bold",
color: "white"
}}
>
정사각형!
</div>
);
};
변수 오브젝트 형태로 작성
// 화살표 함수 구문을 사용하여 myStyle이라는 함수를 정의합니다.
const myStyle = () => {
// 이 함수는 CSS 속성이 담긴 객체를 반환합니다.
return {
// 텍스트 색상을 'pink'로 지정합니다.
color: 'pink',
// 글꼴 크기를 '20px'로 지정합니다.
fontSize: '20px'
};
};
// 화살표 함수 구문을 사용하여 App이라는 함수형 컴포넌트를 정의합니다.
const App = () => {
// 이 컴포넌트는 JSX 요소를 반환합니다.
return (
// 클래스 이름이 'App'인 div 요소의 시작입니다.
<div className="App">
{/* myStyle 함수를 호출하여 반환된 객체를 사용하여 인라인 스타일을 적용한 div 요소의 시작입니다. */}
<div style={myStyle()}>안녕</div>
{/* div 요소의 끝입니다. */}
{/* 클래스 이름이 'App'인 div 요소의 끝입니다. */}
</div>
);
};
<div id="root"></div>
console.clear();
import React, { useState } from "https://cdn.skypack.dev/react@18";
import ReactDOM from "https://cdn.skypack.dev/react-dom@18";
//컴포넌트화 : 리액트 컴포넌트를 만들었다
const Hi = () => {
return <div>Hi</div>;
};
const Hello = () => {
return <div>Hello</div>;
};
const App = () => {
//jsx -> jsx는 하다보면 익혀질거야 / 쉽게 말해 자바스크립트안에서 html 쓸 수 있음
return (
<div>
<Hi /> {/* Hi */}
<Hello /> {/* Hello */}
</div>
);
};
ReactDOM.render(<App />, document.getElementById("root"));
<div id="root"></div>
console.clear();
import React, { useState } from "https://cdn.skypack.dev/react@18";
import ReactDOM from "https://cdn.skypack.dev/react-dom@18";
const Square = () => {
return (
<div
style={{
//기존 style 속성 사용하는 방법과는 다르다
width: "200px",
height: "200px",
backgroundColor: "red",
display: "flex",
alignItems: "center",
fontWeight: "bold",
color: "white"
}}
>
정사각형!
</div>
);
};
const Circle = () => {
return (
<div
style={{
width: "200px",
height: "200px",
backgroundColor: "blue",
display: "flex",
alignItems: "center",
justifyContent: "center",
color: "white",
fontWeight: "bold",
borderRadius: "50%"
}}
>
원!
</div>
);
};
const App = () => {
//jsx -> jsx는 하다보면 익혀질거야 / 쉽게 말해 자바스크립트안에서 html 쓸 수 있음
return (
<div>
<Square />
<Circle />
</div>
);
};
ReactDOM.render(<App />, document.getElementById("root"));
index.jsp
백엔드에서 뷰를 고치는 방법?
자바스크립트에서는
null == 0 == false
null이면 거짓취급
리액트는 불변성을 지켜줘야해