-
카테고리
-
세부 분야
풀스택
-
해결 여부
미해결
Warning 뜨는거 관련하여 질문드립니다.
21.08.16 21:59 작성 조회수 112
0
AppLayout 컴포넌트에서 LoginForm 와 UserProfile 에props로 setState 함수를 전달하면서 로그인 시 warning이 발생합니다.
state 초기값을 boolen 형이 아닌 number 형으로 0 혹은 1로 검사시에도 이런 현상이 발생합니다.
왜그런건가요... ?
답변을 작성해보세요.
0
![fefefefe님의 프로필](https://cdn.inflearn.com/public/main/profile/default_profile.png?w=48)
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,
}
![조현영님의 프로필](https://cdn.inflearn.com/wp-content/uploads/avatars/14793/5bbebf0cc0f37-bpfull.png?w=48)
조현영
지식공유자2021.08.17
일단 이 부분은 antd 버그로 인한 warning이라서 직접적인 수정은 어려울 것 같습니다. antd를 최신 버전으로 수정될 때까지 업데이트해야할 것 같습니다.
0
답변 2