14-2. UserHead 만들기

라우트 파라미터로 전달된 사용자의 정보를 받아와서, 사용자의 프로필 이미지, 아이디, 그리고 지금까지 작성한 포스트 갯수를 보여주는 컴포넌트인 UserHead 컴포넌트의 UI 부터 구성을 해봅시다.

src/components/User/UserHead.js

import React from 'react';
import styled from 'styled-components';
import oc from 'open-color';

const Wrapper = styled.div`
    display: flex;
    align-items: center;
    flex-direction: column;
`;

const Thumbnail = styled.div`
    background-image: url(${props => props.image});
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    width: 100px;
    height: 100px;
    border-radius: 50%;
`;

const Username = styled.div`
    margin-top: 0.5rem;
    font-size: 1.5rem;
    font-weight: 800;
    color: ${oc.gray[8]};
`;

const Count = styled.div`
    margin-top: 0.25rem;
    font-weight: 300;
    color: ${oc.gray[6]};
    b {
        font-weight: 500;
    }
`;



const UserHead = ({image="/static/images/default_thumbnail.png", username="username", thoughtCount=150}) => (
    <Wrapper>
        <Thumbnail image={image}/>
        <Username>{username}</Username>
        <Count>흐른 생각 <b>{thoughtCount}개</b></Count>
    </Wrapper>
);

export default UserHead;

아직 우리는 데이터를 연동하지 않았으니, 기본값을 설정해서 보여주도록 하겠습니다.

위 컴포넌트를 리덕스에 연결시켜줄 UserHeadContainer 를 만들고, 이를 User 페이지에서 렌더링을 하세요.

src/containers/User/UserHeadContainer.js

import React, { Component } from 'react';
import UserHead from 'components/User/UserHead';

class UserHeadContainer extends Component {
    render() {
        const { username } = this.props;

        return (
            <UserHead username={username}/>
        );
    }
}

export default UserHeadContainer;

위 컴포넌트에서는 props 로 받은 username 값을 그대로 전달해줍니다.

src/pages/User.js

import React, { Component } from 'react';
import PageWrapper from 'components/Base/PageWrapper';
import UserHeadContainer from 'containers/User/UserHeadContainer';

class User extends Component {
    render() {
        const { match } = this.props;
        const { username } = match.params;

        return (
            <PageWrapper>
                <UserHeadContainer username={username}/>
            </PageWrapper>
        );
    }
}

export default User;

User 에서 UserHeadContainer 를 렌더링하고나면, 유저페이지에 들어갔을 때 다음과 같이 나타나게됩니다.

results matching ""

    No results matching ""