🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

Warning 뜨는거 관련하여 질문드립니다.

21.08.16 21:59 작성 조회수 112

0

AppLayout 컴포넌트에서  LoginForm 와 UserProfile 에props로 setState 함수를 전달하면서 로그인 시 warning이 발생합니다.

state 초기값을 boolen 형이 아닌 number 형으로 0 혹은 1로 검사시에도 이런 현상이 발생합니다.

왜그런건가요... ?

답변 2

·

답변을 작성해보세요.

0

fefefefe님의 프로필

fefefefe

질문자

2021.08.17

아래 소스 첨부 드립니다.

import { Button, Card } from 'antd';
import Avatar from 'antd/lib/avatar/avatar';
import React, { useCallback } from 'react';
import styled from 'styled-components';
// import PropTypes from 'prop-types';

const UserInfoContainer = styled.div`
    display: flex;
    justify-content: space-between;
`;

const UserProfile = ({ setIsLoggedIn }) => {

    const onLogOut = useCallback(() => {
        setIsLoggedIn(false)
    }, [])

    return (
        <Card
            actions={[
                <div div key='twit' > 짹짹 < br /> 0</div >,
                <div key='followings'>팔로잉<br />0</div>,
                <div key='followings'>팔로워<br />0</div>,
            ]}
        >
            <UserInfoContainer>
                <Card.Meta
                    avatar={<Avatar>OH</Avatar>}
                    title="OSH"
                />
                <Button
                    onClick={onLogOut}
                >
                    로그아웃
                </Button>
            </UserInfoContainer>

        </Card>
    );
}
// UserProfile.propTypes = {
//     setIsLoggedIn: PropTypes.bool.isRequired,
// }

export default UserProfile;


import React, { useMemo, useState } from 'react';
import Prototype from 'prop-types'
import Link from 'next/link'
import { Input, Menu, Row, Col } from 'antd'
import 'antd/dist/antd.css'
import styled, { css } from 'styled-components'

import logo from '../img/logo.svg';
import changeLogo from '../img/logo_on.svg';

import UserProfile from '../compontents/UserProfile';
import LoginForm from '../compontents/LoginForm';

const LogoContainter = styled.div`
    display: flex;
`;
const UrlLogo = styled.a`
    width: 32px;
    height: 32px;
    display: block;
    text-indent: -9999px;
    ${props =>
        props.img &&
        css`
            background-image: url(${props => props.img});
        `
    }

    &:hover{
        background-image: url(${changeLogo});
    }
`
const SearchInput = styled(Input.Search)`
    vertical-align: middle;
`;
const LinkWrapper = styled.div`
    display: flex;
    flex-direction: column;
    align-items: center;
`;

const AppLayout = ({ children }) => {
    const [isLoggeIn, setIsLoggIn] = useState(false)

    return (
        <>
            <Menu mode="horizontal">
                <Menu.Item key='1'>
                    <Link href='/'><a>노드버드</a></Link>
                </Menu.Item>
                <Menu.Item key='2'>
                    <Link href='/profile'><a>프로필</a></Link>
                </Menu.Item>
                <Menu.Item key='3'>
                    <SearchInput enterButton />
                </Menu.Item>
                <Menu.Item key='4'>
                    <Link href='/signup'><a>회원가입</a></Link>
                </Menu.Item>
            </Menu>

            <Row gutter={8}>
                <Col xs={24} md={6}>
                    {
                        isLoggeIn
                            ? <UserProfile
                                setIsLoggedIn={setIsLoggIn}
                            />
                            : <LoginForm
                                setIsLoggedIn={setIsLoggIn}
                            />
                    }
                </Col>
                <Col xs={24} md={12}>
                    {/* 프로필 */}
                    {children}
                </Col>
                <Col xs={24} md={6}>
                    <LinkWrapper>
                        <a
                            style={useMemo(() => (
                                { marginBottom: '10px' }
                            ), [])}
                            href="https://blog.naver.com/qhanfckwsmsd"
                            target="_blank"
                            rel="noreferrer noopener"
                        >
                            Made by OSH
                        </a>

                        <LogoContainter className='gitLogoContainter'>
                            <UrlLogo
                                img={logo}
                                href="https://github.com/oshosh"
                                target="_blank"
                                rel="noreferrer noopener"
                            >
                                Github
                            </UrlLogo>
                        </LogoContainter>
                    </LinkWrapper>
                </Col>
            </Row>

        </>
    );
}

export default AppLayout;

AppLayout.Prototype = {
    children: Prototype.node.isRequired,
}

UserInfoContainer를 제거하세요.

fefefefe님의 프로필

fefefefe

질문자

2021.08.17

제거 후 실행 해보았으나 현상은 동일합니다.

일단 이 부분은 antd 버그로 인한 warning이라서 직접적인 수정은 어려울 것 같습니다. antd를 최신 버전으로 수정될 때까지 업데이트해야할 것 같습니다.

fefefefe님의 프로필

fefefefe

질문자

2021.08.17

답변감사합니다~

0

UserProfile에서 Card 쓰는 부분 코드 보여주세요.

채널톡 아이콘