ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

Issue

import React, { Component } from 'react';
import { Link } from 'react-router-dom';

class Comments extends Component {
  render() {
    let { name, comment } = this.props;

    let isSkip = false;
    let addVal;
    if (comment.length > 20) {
      comment = comment.slice(0, comment.length - 6);
      isSkip = true;
      addVal = (
        <span style={{ color: '#dee2e6', fontSize: '6px' }}> ๋”๋ณด๊ธฐ...</span>
      );
    }

    return (
      <li className="comment-item">
        <div className="comment">
          <Link to="/login/choi" className="feed-bottom-account profile-name">
            {name}
          </Link>
          <span className="comment-content">{comment}</span>
          {isSkip && addVal}
        </div>
        <button className="comment-heart">
          <img
            src="https://s3.ap-northeast-2.amazonaws.com/cdn.wecode.co.kr/bearu/heart.png"
            alt="heart"
          />
        </button>
      </li>
    );
  }
}

export default Comments;

 

๋‹ค์Œ ์ฝ”๋“œ๋Š” comment ๋ž€์— ์ƒˆ๋กœ์šด ๋Œ“๊ธ€์„ ๋žœ๋”๋งํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ์ด๋‹ค.

 

props ๋„˜์–ด ์˜จ ๋Œ“๊ธ€์˜ ๊ธธ์ด๊ฐ€ 20์„ ๋„˜์–ด์„œ๊ฒŒ ๋˜๋ฉด ๋Œ“๊ธ€์˜ ๋’ท ๋‚ด์šฉ์„ ์‚ญ์ œํ•˜๊ณ  '...๋”๋ณด๊ธฐ' ๋ผ๋Š” ์ƒˆ๋กœ์šด ๋ฌธ์ž๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋Š” ์—ฐ์‚ฐ ๊ณผ์ •์„ render() ํ•จ์ˆ˜์—์„œ ์„ ์–ธํ•ด์ฃผ์—ˆ๋‹ค. 

 

๊ทธ ๊ณผ์ •์—์„œ ์Šคํƒ€์ผ์„ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ Inline-style ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์˜€๋Š”๋ฐ

addVal = ( <span style={{ color: '#dee2e6', fontSize: '6px' }}> ๋”๋ณด๊ธฐ...</span> );

ํ•ด๋‹น ์ฝ”๋“œ๋Š” render() ํ•จ์ˆ˜ ์•ˆ์—์„œ ์–ด๋– ํ•œ ๊ณผ์ •์ด ์ด๋ฃจ์–ด์ ธ์•ผ ํ•˜๋ฉฐ ๋ฌด์—‡์ด return๋˜๋Š”์ง€ ๋‹ค์‹œ ์ƒ๊ฐํ•ด๋ดค์„ ๋•Œ, ์ข‹์ง€ ๋ชปํ•œ ์ฝ”๋“œ์ž„์„ ๊นจ๋‹ฌ์•˜๋‹ค.

 

render() ํ•จ์ˆ˜๋Š” ํ™”๋ฉด ์ƒ์— ์‹ค์ œ๋กœ ๋ณด์—ฌ์ง€๋Š” ๊ฒฐ๊ณผ๋ฌผ์„ ๋ฆฌํ„ดํ•ด์•ผ ํ•˜๋ฉฐ ๋ฆฌํ„ด ๋œ ๊ฒฐ๊ณผ๋ฌผ ๋”ฐ๋ผ ๋žœ๋”๋ง๋œ๋‹ค.

JSX๋Š” HTML ๋ฌธ๋ฒ•์„ JS ์ƒ์—์„œ ํ‘œํ˜„ํ•œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๊ธฐ๋ณธ์ ์œผ๋กœ ๋งˆํฌ์—… ํ˜•์‹(๊ตฌ์กฐ)์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

 

ํ•˜์ง€๋งŒ ํ˜„์žฌ addVal ๋ณ€์ˆ˜์— ํ• ๋‹น ๋œ ํƒœ๊ทธ ๋‚ด์—๋Š” Inline-style ์†์„ฑ์ด ํฌํ•จ๋˜์–ด ์žˆ๊ณ  ์ด๋Š” css ์ƒ์˜ style ์˜์—ญ์ด๋‹ค.

 

์ด๋Ÿฐ ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ๋„ ์‹ค์ œ ๋žœ๋”๋ง๋˜๋Š” ๊ณผ์ •์—์„œ๋Š” ๋ณ„ ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ ๊ด€์ ์—์„œ ๋ดค์„ ๋•Œ, ๋ฆฌ์•กํŠธ์˜ ๋™์ž‘์— ์„ฑ๋Šฅ์„ ์ €ํ•˜์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์š”์ธ์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

 

์ปดํ“จํ„ฐ ๊ณผํ•™์—์„œ ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ(separation of concerns, SoC)๋Š” ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ๋ณ„๋œ ๋ถ€๋ถ„์œผ๋กœ ๋ถ„๋ฆฌ์‹œํ‚ค๋Š” ๋””์ž์ธ ์›์น™์œผ๋กœ, ๊ฐ ๋ถ€๋ฌธ์€ ๊ฐœ๊ฐœ์˜ ๊ด€์‹ฌ์‚ฌ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.

 

ํŠนํžˆ, Inline-style๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์Šคํƒ€์ผ ์ ์šฉ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋‚ด๋ถ€ ์Šคํƒ€์ผ(internal style)๊ณผ ์™ธ๋ถ€ ์Šคํƒ€์ผ(external style)๋ณด๋‹ค ๋†’๊ธฐ ๋•Œ๋ฌธ์— ์˜๋„์น˜ ์•Š์€ ์Šคํƒ€์ผ์ด ์ ์šฉ๋œ ๊ฒฐ๊ณผ๋ฌผ์ด ๋žœ๋”๋ง๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.

 

์ด์™€ ๊ฐ™์€ ์ด์œ ๋กœ, ์Šคํƒ€์ผ์„ ๋™์ ์œผ๋กœ ์ถ”๊ฐ€ํ•ด์•ผ ๋˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด className์— css-selector๋ฅผ ์ง€์ •ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฝํ•˜์—ฌ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

addVal = ( <span className="isSkipWord"> ๋”๋ณด๊ธฐ...</span> );
.isSkipWord { color: '#dee2e6', fontSize: '6px' }

 

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2024/10   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ