728x90
반응형
728x90

 

 

 

JPA Repository

 


 

JPA는 "Java Persistence API"의 약자로, 자바 객체를 관계형 데이터 베이스에 영속적으로 저장하고 조회할 수 있는 ORM 기술에 대한 표준 명세를 의미합니다. JPA를 통해 개발자는 SQL쿼리를 작성하지 않고도 객체를 통해 데이터베이스를 조작할 수 있으며, 객체 지향적인 코드 작성과 유지 보수성이 향상됩니다.

기본적으로 Entity클래스를 작성한 후 Repository 인터페이스를 생성해야 하는데, Springboot에서 기본적인 작업을 도와주는 JPA Repository 인터페이스가 있습니다.

Spring Data JPA에서 제공하는 인터페이스 중 하나로, JPA를 사용하여 데이터베이스를 조작하기 위한 메서드들을 제공합니다. JPARepository 인터페이스를 상속받는 인터페이스를 정의하면, 해당 인터페이스를 구현하는 클래스는 JPA에서 제공하는 메서드들을 사용할 수 있습니다.

데이터베이스의 추가, 조회, 수정, 삭제의 findAll(), findById(), save() 등의 메서드들을 사용할 수 있습니다. 제공되는 메서드들 이용하여 쉽고 간편하게 CRUD 조작을 할 수 있습니다.
즉, JPA Repository를 사용 시, 복잡한 JDBC(Java DataBase Connectivity) 코드를 작성하지 않아도 간단하게 DB와의 데이터 접근 작업을 처리할 수 있습니다.

JPARepository 인터페이스는 제네릭 타입을 사용하여 Entity클래스와 복합키를 사용하고 있다면 해당 Entity의 ID클래스를 명시합니다. 이를 통해 해당 인터페이스를 상속받는 구현체는 Entity클래스와 ID클래스에 대한 정보를 알고 있어서, 런타임 시점에 적절한 쿼리를 생성하고 실행할 수 있습니다.

 

JPA Repository 사용법

 

먼저 데이터베이스에 저장하기 위해 유저가 정의한 클래스가 필요한데 그런 클래스를 Entity라고 한다. Domain이라고 생각하면 쉽게 이해가 가능합니다. 일반적으로 RDBMS에서 Table을 객체화 시킨 것으로 보면 되며, 그래서 Table의 이름이나 컬럼들에 대한 정보를 가지게 됩니다.

Table 및 컬럼을 설정하는 데 사용되는 어노테이션을 먼저 설명해드리겠습니다.

@Id
primary key를 가지는 변수를 선언하는 것을 뜻한다. @GeneratedValue 어노테이션은 해당 Id 값을 어떻게 자동으로 생성할지 전략을 선택할 수 있습니다. 여기서의 전략은 Auto로 설정해두었습니다.

@Table
별도의 이름을 가진 데이터베이스 테이블과 매핑되며, 기본적으로 @Entity로 선언된 클래스의 이름은 실제 데이터베이스의 테이블 명과 일치하는 것을 매핑합니다. 따라서 @Entity의 클래스명과 데이터베이스의 테이블명이 다를 경우에 @Table(name=" ")과 같은 형식을 사용해서 매핑이 가능합니다.


@Column
@Column 선언이 꼭 필요한 것은 아니지만 @Column에서 지정한 변수명과 데이터베이스의 컬럼명을 서로 다르게 주고 싶다면 @Column(name=" ") 같은 형식으로 작성하면 됩니다. 그렇지 않은 경우에는 기본적으로 멤버 변수명과 일치하는 데이터베이스 컬럼을 매핑합니다.

 

 

@Entity
public class Member {

    @Id
    @GeneratedValue(strategy= GenerationType.AUTO)
    private long id;

    @Column
    private String name;

    @Column
    private int age;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
728x90
반응형

'[EEEEEEETC]' 카테고리의 다른 글

[복 - 습] Module & Library & Framework  (0) 2024.03.11
728x90

 

 

.NET(닷넷)이란 ?

 

닷넷 프레임워크(.NET Framework)는 마이크로소프트사에서 제공하는 윈도우 프로그램 개발 및 실행환경입니다.
.NET은 애플리케이션의 개발, 배포, 실행을 지원하는 종합적인 플랫폼을 제공하며, Windows 운영 체제와 함께 다양한 플랫폼에서 실행될 수 있습니다.

.NET의 특징은 CLS(닷넷 프레임워크의 언어가 반드시 지켜야 하는 언어 스펙)을 따르는 언어라면 어떠한 언어라도 닷넷 프레임워크에서 실행 가능하며 CLR이라는 가상 기계 위에서 작동하기 때문에 플랫폼에 독립적이며 궁극적으로 프로그래머가 코딩(특히 윈도우 프로그램)을 하는데 더 편한 환경을 제공해줍니다.

 

 

 

.NET의 특징은 한마디로 플랫폼에 독립적이면서도 프로그램을 개발하기 쉬워졌습니다. 일정한 규칙 즉 ,CLS(Common Language Specification)을 따르는 언어라면 어떠한 언어라도 이 프레임워크에서 실행될 수 있습니다. 그리고 CLS 따르는 언어는 CLR(Common Language Runtime)이라는 독립적인 환경에서 실행됩니다. 

 

C#은 이와같은 .NET 프레임워크를 위한 코드를 만들 수 있도록 마이크로소프트에서 기존의 언어의 문제점을 보안하고, 장점을 살려서 만든 새로운 언어입니다. .NET 프레임워크에는 여러 언어가 존재하지만 그 중에서 가장 중심이 되고 또 개발자가 쉽게 다가갈 수 있는 언어가 바로 C#입니다.

 

C# 이란 ?

 

 

 

 

 C#은 마이크로소프트사가 2000년 6월에 C와 C++의 강점, 그리고 비주얼 베이직의 편의성을 결합하여 만든 객체지향 프로그래밍 언어입니다. 이러한 C#은 그 당시 시장에서 가장 주목을 받고 있던 언어인 JAVA를 염두에 두고 만들어졌기 때문에 JAVA의 장점까지 두루 가지고 있습니다.



  C#은  .NET 프레임워크를 기반으로 하여 견고하고 보안성이 높은 프로그램을 제작할 수 있는데, 윈도우용 프로그램은 물론 모바일 프로그램, 클라이언트-서버 프로그램, 데이터베이스 프로그램, 웹 기반 프로그램, 사물인터넷(IoT) 프로그램에 이르기까지 다양한 종류의 어플리케이션을 만드는 데 사용할 수 있습니다. 다시 말해, 우리가 어떤 프로그램을 구상하더라도 C#으로 모두 만들 수 있다는 뜻이다. 그리고 C#의 개발 목적 자체가  .NET 프레임워크를 구현하기 위함인 만큼  .NET 프레임워크 위에서 C#보다 강력한 언어는 없다고 단언할 수 있습니다.

 

.NET Framework

 

.NET Framework는 공통언어런타임(CLR)과 기본 클래스 라이브러리(BCL)로 구성되며 , 용도에 따라서 웹에서 사용하는 ASP.NET과 일반 어플리케이션을 구성하는 Window Form으로 구분될 수 있습니다. ASP.NET에서 사용하는 Form이 WebForm이기 때문에 WebForm 프로그램이라고도 합니다.

마이크로소프트 사 공식문서에 따르면 .NET Framework는 .NET의 최초 구현체입니다. Windows에서 웹 사이트, 서비스, 데스크톱 앱 등을 실행하는 것을 지원합니다.
.NET는 Windows, Linux 및 macOS에서 웹 사이트, 서비스 및 콘솔 앱을 실행하기 위한 플랫폼 간 구현체입니다. 
.NET은 GitHub의 오픈 소스. .NET은 이전에 .NET Core라고 했습니다.
Xamarin/Mono은(는) iOS 및 Android를 포함한 모든 주요 모바일 운영 체제에서 앱을 실행하기 위한 .NET 구현입니다.

728x90
반응형
728x90

 

모듈 , 라이브러리 그리고 프레임워크


 

프로그램은 작은 부분들이 모여서 크고 복잡한 부분으로 발전합니다. 그 과정에서 기존에 작성되었던 코드의 재활용과 손쉬운 유지보수를 위해 다양한 방법들이 사용됩니다.

하나의 복잡한 코드를 여러 개의 모듈로 나누어서 분리하는 방법이 그중 하나이며, 아래와 같은 장점을 가지고 있습니다.

자주 사용되는 코드를 별도의 파일로 만들게 되면 해당 코드가 필요할 때마다 사용할 수 있으며, 별도의 파일로 존재하기 때문에 해당 부분을 리팩토링하여 개선하게 되면 모든 코드에도 반영이 손쉬운 장점이 있습니다. 또한, 필요한 로직을 해당 위치에서 로드해 사용하기 때문에 메모리 낭비를 줄일 수 있습니다. 

이렇게 분리하는 방법을 학습해나가다보면 모듈, 라이브러리, 프레임워크라는 용어 들이 등장합니다. 해당 용어의 사전적 정의는 많이 나와 있으나, 실무에서 커뮤니케이션 할 때 사용시에는 각각의 개념을 정확히 알지 못하는 상태에서 사용하는 경우도 있습니다.

그래서 한번 정리하며 복습해보는 시간을 가져보도록 하겠습니다.

 

1. MODULE

 

 

Module은 별도의 파일로 독립도니 기능을 의미합니다. 순수한 javascript에서는 모듈이라는 개념이 분명하게 존재하지 않는다고도 합니다. javascript가 구동되는 호스트 환경에 따라 서로 다른 모듈화 방법이 제공됩니다. 
여기서 호스트 환경이란 ?  JavaScript가 구동되는 환경을 의미한다. 예를 들어, Node.js는 JavaScript의 문법을 따르지만 이 언어가 구동되는 환경은 브라우저가 아니라 시스템을 제어하는 서버 측 환경을 의미합니다.

모듈을 만들면 다른 파일에서 해당 모듈을 불러와서 선언한 후 사용할 수 있습니다.

 

 

2. LIBRARY

 

 

라이브러리는 모듈과 비슷한(거의 같은) 개념이다 생활 코딩에서는 설명하는 차이점은 다음과 같습니다. 모듈이 프로그램을 구성하는 작은 부품의 느낌이라면, 라이브러리는 자주 사용 되는 로직을 잘 정리한 집합 느낌입니다. 사전적 의미로는 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임으로 구성 데이터, 문서, 도움말 자료, 메시지 틀, 미리 작성된 코드, 서브루틴(함수), 클래스, 값, 자료형 사양을 포함할 수 있습니다. 

 

3. Framework

 

 

복잡한 문제를 해결하거나 서술하는 데에 사용 되는 기본 개념 구조, 즉 뼈대입니다. 애플리케이션 개발에 바탕이 되는 템플릿과 같은 역할을 하는 클래스들과 인터페이스의 집합으로 애플리케이션을 구축할 때 공통적인 부분을 제공합다.
개발자가 처음부터 모든 것을 개발을 할 수 있지만, 프레임워크를 사용하면 원하는 기능에만 집중하여 구현할 수 있습니다. 프레임워크 안에는 기본적으로 필요한 기능을 갖추고 있으므로 라이브러리(혹은 모듈)이 포함되어 있습니다.

728x90
반응형

'[EEEEEEETC]' 카테고리의 다른 글

[복 - 습] JPA Repository  (1) 2024.03.12
728x90

 

 

✅ Object 자료형이란?

 

자바스크립트에서 객체(object)는 여러 데이터를 담을 수 있는 자료형입니다. 객체는 이름과 값의 쌍으로 이루어진 속성(property)을 포함할 수 있습니다. 이러한 속성은 문자열 또는 심볼 값을 가질 수 있고, 객체, 함수, 배열 또는 기본 데이터 유형(숫자, 문자열, 불리언 등)의 값을 포함할 수 있습니다.

JavaScript 중괄호 { } 로 정의되며, 속성들은 쉼표로 구분됩니다. 각 속성-값 쌍은 쉼표로 구분되며, 속성 이름은 문자열이어야 하고, 값은 문자열, 숫자, 불리언, 객체, 배열, 또는 null일 수 있습니다.

 

예를 들어, 다음은 객체를 정의하는 예시입니다.

            const panda = {
              name: "푸바오",
              age: 17,
              hobbies: ["eating", "playing"]
            };

            name: 문자열 값 ("푸바오")
            age: 숫자 값 (17)
            hobbies: 배열 (문자열의 배열)

자바스크립트 객체는 동적으로 속성을 추가, 수정 또는 삭제할 수 있습니다. 객체 내의 속성은 해당 속성의 이름을 사용하여 접근할 수 있습니다. 예를 들어, panda.name은 "푸바오"를 반환합니다.

객체는 JavaScript 프로그래밍에서 중요한 개념이며, 데이터를 구조화하고 조작하는데 유용하게 사용됩니다. 객체는 프로그램의 다양한 부분에서 사용되며, 자바스크립트에서 매우 흔하게 쓰입니다.

 


React에서 라우팅 설계

React에서 라우팅이란, 다양한 화면(페이지) 간의 전환 및 네비게이션을 관리하는 기술을 의미합니다. React 애플리케이션에서 여러 페이지를 갖고 있을 때, 사용자가 각 페이지로 이동하고 애플리케이션의 상태를 변경하면서 화면이 동적으로 업데이트될 수 있도록 라우팅을 구현할 수 있습니다.

React에선 React-Router를 이용하여 라우팅을 구조화하고 설계합니다. 이 때 사용되는 항목들은 아래와 같습니다.

  1. Router (라우터) <BrowserRouter> : HTML5의 History API를 사용하여 브라우저의 URL을 관리하는 라우터입니다. 주로 브라우저 환경에서 사용됩니다. <HashRouter> : URL의 해시(fragment)를 사용하여 라우팅을 관리하는 라우터입니다. 주로 정적 파일 서버에서 사용되거나 브라우저 호환성을 고려할 때 유용합니다.

  2. Route (라우트) <Route path="/somepath" component={SomeComponent} /> : 특정 경로(path)에 대한 컴포넌트(component)를 렌더링합니다. 지정된 경로에 도달하면 해당 컴포넌트가 렌더링됩니다. 보통 나누어지는 페이지라고 생각하면 됩니다.

  3. Outlet (아웃렛) <Outlet /> : 중첩된 라우터에서 부모 라우터 컴포넌트 내에서 자식 라우터 컴포넌트를 렌더링하는 역할을 합니다. Outlet은 중첩된 라우터 사이에서 자식 라우터가 렌더링될 위치를 나타냅니다.

  4. Link (링크): <Link to="/somepath">Go to Some Path</Link> 다른 경로로 이동할 때 사용하는 컴포넌트입니다. 클릭 시, 지정된 경로로 이동하게 됩니다.

  5. Redirect (리다이렉트): <Redirect to="/newpath" /> : 특정 경로로 리다이렉트할 때 사용합니다. 사용자가 지정된 경로로 이동하려고 할 때, 자동으로 새로운 경로로 리다이렉션됩니다.

  6. Switch (스위치) <Switch>: 여러 <Route> 컴포넌트 중 첫 번째로 매치되는 라우트만 렌더링하도록 도와주는 컨테이너입니다. 중첩된 라우트에서 사용하여 중복된 경로를 방지할 수 있습니다.

라우팅 구조는 위의 컴포넌트들을 적절하게 조합하여 정의됩니다. 이러한 컴포넌트들을 사용하여 React 애플리케이션에서 다양한 화면 간의 전환을 관리하고 네비게이션을 구현할 수 있습니다.
일반적으로 React Router에서 라우팅을 구현할 때는 BrowserRouter를 루트 컴포넌트로 사용하고, Route, Link, Switch, Outlet, 그리고 Redirect 등을 조합하여 필요한 네비게이션 구조를 생성합니다.

 

✍️ Route 사용 예제

 

    이 예제에서는 / 경로는 Home 컴포넌트를, /about 경로는 About 컴포넌트를 렌더링합니다.


                import React from 'react';
                import { BrowserRouter, Router, Route, Link } from 'react-router-dom';

                const Home = () => <h2>홈 페이지</h2>;
                const About = () => <h2>소개 페이지</h2>;

                const App = () => (
                  <Router>
                    <nav>
                      <Link to="/">홈</Link>
                      <Link to="/about">소개</Link>
                    </nav>
                    <Route path="/" exact component={Home} />
                    <Route path="/about" component={About} />
                  </Router>
                );

                export default App;

 

 💡useNavigate( )

 

useNavigate는 함수 컴포넌트 내에서 라우팅을 수행하는 데 사용됩니다. 이 후크를 사용하면 함수 컴포넌트 내에서 라우팅을 쉽게 제어할 수 있습니다.

			const MyComponent = () => {
			  const navigate = useNavigate();
			
			  const handleClick = () => {
			    // 다른 경로로 이동
			    navigate('/another-page');
			  };
			
			  return (
			    <div>
			      <button onClick={handleClick}>다른 페이지로 이동</button>
			    </div>
			  );
			};

 

 

 

 

💡 Nested Routes (중첩 라우트)



Nested routes(중첩된 라우트)은 하나의 라우트가 다른 라우트에 중첩되어 있는 상황을 의미합니다. 중첩된 라우트를 구현하려면 Route 컴포넌트의 element 속성에 중첩된 컴포넌트를 지정하고, 중첩된 컴포넌트에서는 Outlet 컴포넌트를 사용하여 하위 라우트를 렌더링합니다.

보통 여러 페이지들이 필요한 경우에 사용 됩니다. 페이지 간 차이점이 크지 않을 때, 내부의 데이터가 조금씩 변경되는 경우 Nested Routes를 사용하면 일부분만 수정되어 페이지 렌더링을 할 수 있습니다.

 

✍️ 사용 예시

 

        import { Router, Route, Routes, Outlet } from 'react-router-dom';

                const App = () => (
                  <Router>
                    <Routes>
                      <Route
                        path="/dashboard"
                        element={<Dashboard />}>
                        <Route path="profile" element={<Profile />} />
                        <Route path="settings" element={<Settings />} />
                        <Route path="*" element={<NotFound />} />
                      </Route>
                      <Route path="*" element={<NotFound />} />
                    </Routes>
                  </Router>
                );


                const Dashboard = () => (
                  <div>
                    <h1>상단 메뉴</h1>
                    <nav>
                      <Link to="profile">프로필</Link>
                      <Link to="settings">설정</Link>
                    </nav>
                    <hr />
                    <Outlet /> {/* 중첩된 라우트를 렌더링할 위치 */}
                  </div>
                );

        /dashboard/profile 경로로 접근했을 시 함께 라우팅 되는 컴포넌트
                const Profile = () => (
                  <div>
                    <h2>프로필 페이지</h2>
                  </div>
                );


        /dashboard/settting 경로로 접근했을 시 함께 라우팅 되는 컴포넌트
                const Settings = () => (
                  <div>
                    <h2>설정 페이지</h2>
                  </div>
                );


        /dashboard/* //잘못된 경로로 접근했을 시 함께 라우팅 되는 컴포넌트 */
                const NotFound = () => (
                  <div>
                    <h2>페이지를 찾을 수 없습니다.</h2>
                  </div>
                );

 

이 예시에서 /dashboard 경로는 Dashboard 컴포넌트를 렌더링하고, /dashboard/profile과 /dashboard/settings 경로는 각각 Profile과 Settings 컴포넌트를 중첩된 라우트로 렌더링합니다.
중첩된 라우트를 렌더링하는 위치는 Outlet 컴포넌트로 지정됩니다.

이렇게 하면 /dashboard 경로로 접근했을 때 Dashboard 컴포넌트가 보이고, Dashboard 내부의 Outlet은 중첩된 라우트의 위치를 나타내며,
/dashboard/profile과 /dashboard/settings에 각각 매핑되는 컴포넌트가 렌더링됩니다. 이러한 방식으로 중첩된 라우트를 구성할 수 있습니다.

 

 


 

 

💡 URL 파라미터

 

URL 파라미터는 웹 페이지의 URL에 포함된 특정 정보를 나타내는 값입니다. 이러한 파라미터는 주로 웹 애플리케이션에서 동적으로 데이터를 전달하고 공유하는 데 사용됩니다. URL 파라미터는 물음표( ? ) 뒤에 키-값 쌍으로 이루어진 문자열로 표현되며, 여러 개의 파라미터는 앰퍼샌드( & )로 구분됩니다.

✅ useParams( ) : URL에서 파라미터 값을 추출하는 데 사용됩니다. 이 후크는 React 함수 컴포넌트 내에서 사용되며, 특정 URL 경로에서 동적으로 변하는 파라미터 값을 가져올 수 있습니다.

 

                    const Component = () => {
                      const { paramName } = useParams();

                      // paramName은 URL에서 추출한 동적 파라미터 값입니다.

                      return <div>{paramName}</div>;
                    };

            위의 예시에서 paramName은 URL에서 추출한 동적 파라미터의 값입니다. 
            예를 들어, URL이 /users/:id 형식으로 되어있고 현재 페이지의 URL이 /users/123이면, 
            paramName에는 "123"이 할당됩니다.

 

이러한 방식으로 useParams를 사용하면 URL에서 동적으로 변하는 파라미터 값을 컴포넌트 내에서 사용할 수 있습니다. 이를 통해 동적 라우팅을 처리하거나 특정 ID나 식별자를 기반으로 데이터를 불러오는 등의 상황에서 매우 유용합니다.

 

 

 

728x90
반응형

'[FRONTEND] > REACT' 카테고리의 다른 글

[REACT] 기본 문법_Props !  (1) 2023.10.20
[REACT] 기본 문법_컴포넌트 문법 & Map( ) 함수  (0) 2023.10.12
[REACT] 기본문법  (0) 2023.10.05
[REACT] 시작하기  (1) 2023.10.03
[REACT] REACT 시작하기  (0) 2023.10.03
728x90

 

2달 전 예매 성공한 콘서트 후기 시작합니다 😊

 

찰리푸스 노래를 평소에도 즐겨듣고, 라이브 영상도 자주 찾아보던 차에 한국에서 내한 공연을 한다는 정보를 알게 되었습니다!

티켓팅은 당연하게...! 실패했지만 양도하는 분께 어렵사리 구해 갈 수 있게 되었습니다. 자리는 38구역 1열 이었는데 , 올림픽 공원은 처음이었는데 생각보다 내부가 넓지 않고, 단차가 잘 되어있어 잘 보이는 위치였습니다!

일행이랑은 앞 뒤 연석이었는데, 공연이 중간에 이야기 시간이 거의 없고 공연만 이어져서 오히려 옆자리 연석이었어도 대화를 나눌 시간이 거의 없었을 거 같아요 ㅎㅎ 정말 공연에만 몰입한 시간이었습니다! 

 

 

시작 한시간 전에 도착했는데도, 사람들은 많았어서 정신은 없었습니다. 안내요원들도 딱히 외부에서 통제를 잘 진행하진 못해서 분명 제가 알아본 바로는 가로 세로 35cm 이하의 가방이면 소지가 가능하다고 들었는데 제가 가져간 백팩을 백팩이라 무조건 반납해야한다고해서 반납을 했습니다.

그런데 입장하고 보니 제가 소지했던 가방보다 훨씬 큰 가방을 매시고도 들어오시길래 그냥 선택적 반납 불가인가 싶어 조금은 황당했습니다.

 

제 자리에서 아이폰 13미니로 줌을 했을 때 보여지는 무대 입니다. 시야는 좋았어요 개미처럼 보이거나 그렇진 않았습니다!

저는 키도작고 체력도 좋지않은 편이라 스탠딩 분들이 부럽다기 보다는,, 체력이 정말 대단하시고 열정 좋으시다 하는 생각이었습니다만 분위기는 제대로 느낄 수 있는 곳 같았습니다 ㅎㅎ

 

 

 

시작 전 제 자리에서 전체 상황을 촬영한 영상입니다. 시작 직전에 촬영한거라 어느새 스탠딩구역도 가득 찬 상황이라 사람이 정말 많았습니다 핸드폰도 살짝씩 안터지기 시작했고.. ? 그래도 시작 직전이라 분위기는 되게 두근두근 했습니다 ㅎㅎ

 

기존에 찾아봤던 대로 charlie be quiet! 으로 인트로를 시작하며 등장했습니다. 

공연이 계속되느라 영상은 대부분 찍었는데 인상깊었던 몇가지 영상만 업로드 합니다 ㅎㅎ

 

1. Dangerously

 

 

 

 

 

2. We don't talk anymore

 

 

 

 

3. I don’t think that I like her

 

 

 

4. See You Again (앵콜의 마지막 곡)

 

 

 

앵콜 통해서는 One Call Away랑 See You Again을 마지막으로 1시간 ? 조금 넘는 시간동안 공연이 진행되었습니다.

그동안 음원으로만 듣던 노래를 라이브로 들을 수 있어서 너무 좋았던 시간이구, 진짜 시간가는 줄 모르고 즐겼던 공연인 거 같습니다 ㅎㅎ 가사를 조금만 더 잘 알았다면 떼창에 여러곡 호응을 했을 텐데,, 그게 조금 아쉽더라구요 ㅎㅎ

 

오늘 (21일) 공연을 가시는 분들도 정말 재미있게 즐기는 시간이 되시길 바라겠습니다 ~~

 

feat. 제가 층이 나누어지는 구역 바로 앞에 앉았는데 무슨 연예인 가드 같은 분들이 아주 분주하게 누굴 데려오고 나갔는데,, 남자 무리였고 대형 기획사 소속 연습생 같았습니다..! 근데 통 누군진,,, 설마 데뷔한 연예인인가... 아주 가까이서 유심히 봐도 모르겠더라구요 나중에 알게되면 이야기 보태겠습니다!

 

 

728x90
반응형

'(๑・ิ◡・ิ๑)' 카테고리의 다른 글

[일상] 캠핑!  (0) 2023.06.12
[일상] 하루종일 이 상태;;  (0) 2023.06.01
[일상] 정보처리기사 시험이랑 절교  (1) 2023.05.31
728x90

💡 React Props 문법

 

React에서 props(속성)은 부모 컴포넌트에서 자식 컴포넌트로 데이터를 전달하는 방입니다. Props를 사용하면 컴포넌트 간의 데이터 흐름을 설정할 수 있습니다. 이것은 React 애플리케이션에서 컴포넌트들이 데이터를 공유하고 상호작용하는 방법을 제어하는데 중요합니다.

Props 전달하기

  • <하위Component propName={value} />
  • 여기서 propName은 자식 컴포넌트에서 사용할 수 있는 속성의 이름이고, value는 전달하고자 하는 값입니다.

Props 사용하기 - 자식 컴포넌트에서 props를 사용하는 방법

  • function 자식Component(props) { return <div>{props.propName}</div>; }

또는 ES6의 구조 분해(destructuring)를 사용하여 **props**를 가져올 수도 있습니다

  • function 자Component({ propName }) { return <div>{propName}</div>; }

 

React에서의 이벤트 핸들러

 

React에서 이벤트 핸들러는 사용자의 동작(클릭, 입력, 마우스 움직임 등)에 대응하여 특정 동작을 수행하는 함수를 의미합니다. 이벤트 핸들러는 React 컴포넌트의 메서드로 정의되고, 주로 사용자 상호작용을 다루는 데 사용됩니다.

React 애플리케이션에서 사용자의 입력이나 브라우저 이벤트가 발생하면, React는 해당 이벤트를 처리할 수 있는 핸들러 함수를 호출합니다. 이 핸들러 함수는 주로 사용자 인터페이스의 동적인 부분을 업데이트하고, 상태(state)를 변경하거나 컴포넌트를 재렌더링하여 사용자의 행동에 응답합니다.

  • onChange( ) : 사용자 입력에 대한 반응을 처리하고 상태(state)를 업데이트하는 중요한 방법 중 하나입니다. 주로 폼 요소(텍스트 입력, 체크박스, 라디오 버튼 등)과 함께 사용됩니다
            <input type="text" onChange={/* input에 데이터가 입력되며 요소의 변경이 발생되었을 때 실행될 코드 */} />

            onChante((e) => {} )
            input에 입력된 데이터를 가져오고 싶을때 (e)로 입력 
            input 태그에서 발생하는 이벤트에 여러 기능이 담겨있음

 

  • onClick( ) : 사용자가 요소를 클릭할 때 발생하며, 주로 버튼이나 링크와 함께 사용됩니다.


		const changeTitle = () => {
                    let copy = [...todo];
                    copy[0] = "스프링 인강 3개듣기"
                    copy[1] = "새싹 문제 3개씩 풀기"
                    copy[2] = "SqlD 문제 5개씩 풀기"
                    setTodo(copy);
                  }

                <button onClick={() => changeTitle}>글 제목 변경 버튼</button>
728x90
반응형

'[FRONTEND] > REACT' 카테고리의 다른 글

[REACT] 기본 문법_Object 자료형 , Route  (1) 2023.10.22
[REACT] 기본 문법_컴포넌트 문법 & Map( ) 함수  (0) 2023.10.12
[REACT] 기본문법  (0) 2023.10.05
[REACT] 시작하기  (1) 2023.10.03
[REACT] REACT 시작하기  (0) 2023.10.03

+ Recent posts