inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] React로 NodeBird SNS 만들기

회원가입 페이지 만들기(커스텀 훅)

AppLayout으로 감싸는 이유가 무엇인가용?

281

송지훈

작성한 질문수 28

0

<>

<Head>

...

</Head>

<AppLayout>...</AppLayout>

<>

이렇게 감싸는 거랑 다른 점이 무엇인가요?

profile도 이러한 형식으로 햇는데

signup.js만

AppLayout으로 전체를 감싼 의도가 무엇인지 알고싶습니다.

강의는 너무 유익하게 보고 있습니다.

redux react nodejs express Next.js

답변 5

2

제로초(조현영)

취향의 문제는 아니고요. <></>는 자식 태그가 2개 이상일 때만 감싸는 겁니다.

자식 태그가 한개라면 <></>는 아무 의미가 없으므로 안 쓰시는 게 낫습니다.

<></>는 보이는 그대로 빈껍데기입니다. 자식 태그가 2개 이상일 때 묶어주는 역할 이외에는 아무런 역할이 없습니다.

1

제로초(조현영)

아아, 이해했습니다.

리액트는 무조건 부모가 하나여야 돼서 Head와 AppLayout 두 개가 자식인 경우는 가상의 <></>로 묶어주어야 합니다.

사실 Head를 AppLayout 태그 안에 넣어도 돼서 그렇게 한다면

<></> 사용 없이

<AppLayout>
  <Head>
  </Head>
  <다른거></다른거>
</AppLayout>

이렇게 할 수 있습니다.

바깥으로 꺼낸다면

<>
  <Head></Head>
  <AppLayout></AppLayout>
</>

이고요.

0

송지훈

답변 감사합니다.

제로초님 말씀은 <AppLayOut> 안에 <Head>가 들어 있어도 상관없어서 <AppLayout>으로 감싸셨고,

하나의 부모 태그는 <></> , <AppLayout></AppLayout> 둘중 하나 취향에 따라 쓰면 되는걸로 이해해도 될 까요?

0

송지훈

별로 상관없는 건가요??

하나는 <></> 

하나는 <AppLayout></AppLayout>으로 감싸져 있어서 무슨 의미가 있는지 궁금해서 질문 드렸습니다.

<AppLayout>
      <Head>
        <title>Signup | NodeBird</title>
      </Head>
      <Form onFinish={onSubmit}>
        <div>
          <label htmlFor="user-email">이메일</label>
          <br />
          <Input
            name="user-email"
            value={email}
            required
            onChange={onChangeEmail}
            type="email"
          />
        </div>
        <div>
          <label htmlFor="user-nickname">닉네임</label>
          <br />
          <Input
            name="user-nickname"
            value={nickname}
            required
            onChange={onChangeNickname}
          />
        </div>
        <div>
          <label htmlFor="user-password">비밀번호</label>
          <br />
          <Input
            name="user-password"
            value={password}
            type="password"
            required
            onChange={onChangePassword}
          />
        </div>
        <div>
          <label htmlFor="user-passwordCheck">비밀번호체크</label>
          <br />
          <Input
            name="user-passwordCheck"
            value={passwordCheck}
            type="password"
            required
            onChange={onChangePasswordCheck}
          />
          {passwordError && (
            <ErrorMessage>비밀번호가 일치하지 않습니다.</ErrorMessage>
          )}
        </div>
        <div>
          <Checkbox name="user-term" checked={term} onChange={onChangeTerm}>
            회원가입 약관에 동의합니다.
          </Checkbox>
          {termError && <ErrorMessage>약관에 동의하셔야 합니다.</ErrorMessage>}
        </div>
        <div style={marginTop: 10 }}>
          <Button type="primary" htmlType="submit" loading={signUpLoading}>
            가입하기
          </Button>
        </div>
      </Form>
    </AppLayout>

0

제로초(조현영)

profile이랑 signup이랑 index랑 다 AppLayout으로 감싸져 있습니다. signup만 감싸져있다고 하신게 무슨 의미인지를 모르겠습니다.

넥스트 버젼 질문

0

78

2

로그인시 401 Unauthorized 오류가 뜹니다

0

89

1

무한 스크롤 중 스크롤 튐 현상

0

175

1

특정 페이지 접근을 막고 싶을 때

0

103

2

createGlobalStyle의 위치와 영향범위

0

96

2

인라인 스타일 리렌더링 관련

0

91

2

vsc 에서 npm init 설치시 오류

0

146

2

nextjs 15버전 사용 가능할까요?

0

158

1

화면 새로고침 문의

0

121

1

RTK에서 draft, state 차이가 있나요?

0

153

2

Next 14 사용해도 될까요?

0

452

1

next, node 버전 / 폴더 구조 질문 드립니다.

0

349

1

url 오류 질문있습니다

0

211

1

ssh xxxxx로 우분투에 들어가려니까 port 22: Connection timed out

0

373

1

sudo certbot --nginx 에러

0

1275

2

Minified React error 콘솔에러 (hydrate)

0

470

1

카카오 공유했을 때 이전에 작성했던 글이 나오는 버그

0

247

1

프론트서버 배포 후 EADDRINUSE에러 발생

0

327

1

npm run build 에러

0

518

1

front 서버 npm run build 중에 발생한 에러들

0

382

1

서버 실행하고 브라우저로 들어갔을때 404에러

0

338

2

css 서버사이드 랜더링이 적용되지 않아서 문의 드립니다.

0

288

1

팔로워 3명씩 불러오고 데이터 합쳐주는걸로 바꾸고 서버요청을 무한으로하고있습니다.

0

239

2

해시태그 검색에서 throttle에 관해 질문있습니다.

0

201

1