ewhk9887/korean_code_reviews_from_github huggingface dataset:
@@ -0,0 +1,76 @@
+import json,bcrypt,jwt
+from json.decoder     import JSONDecodeError
+
+from django.db.models import Q
+from django.views     import View
+from django.http      import JsonResponse
+
+from .models          import User
+from my_settings      import SECRET_KEY, ALGORITHM
+
+
+class SignUpView(View):
+    def post(self, request):
+        try:
+            data    = json.loads(request.body)
+            name    = data['name']
+            email   = data['email']
+            phone   = data['phone']
+            password= data['password']
+
+            if '.' not in email or '@' not in email:
+                return JsonResponse({'message':'error_email_form'}, status=401)            
+
+            if len(password)<8: 
+                return JsonResponse({'message':'error_password_form'}, status=401)            
+
+            if User.objects.filter(Q(name=name) | Q(email=email) | Q(phone=phone)).exists:
+                return JsonResponse({'message':'id_exist'}, status = 401)           
+               
+            hashed_password = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt())
+            decoded_password= hashed_password.decode('utf-8')
+            
+            User.objects.create(email=email, name=name, phone=phone, password=decoded_password)
+            return JsonResponse({'message':'success_signup'}, status = 201)
+
+        except KeyError:
+                return JsonResponse({'message': 'KEY_ERROR'}, status=400)            
+        
+        except JSONDecodeError:
+            return JsonResponse({'message': 'JSONDecodeError'}, status=400)        
+        
+
+class SignInView(View):
+    def post(self, request):
+        try:    
+            data    = json.loads(request.body)
+            id      = data['id']
+            password= data['password']
+            user  = User.objects.get(Q(name=id) | Q(email=id) | Q(phone=id))
+
+            if user is not id:
+                return JsonResponse({'message':'error_id_matching'}, status=401)
+
+            if user is id:
+                decoded_password = user.password
+                encoded_password = password.encode('utf-8')
+                bcrypt.checkpw(encoded_password, decoded_password.encode('utf-8'))
+                token = jwt.encode({'user':user.id}, SECRET_KEY, ALGORITHM)
+                return JsonResponse({'message':'success_signin', 'access_token':token}, status=201)
+            
+            return JsonResponse({'message':'error_password_matching'}, status = 401)
+
+        except User.MultipleObjectsReturned:
+            return JsonResponse({'message': 'KEY_ERROR'}, status=401)
+
+        except User.DoesNotExist:
+            return JsonResponse({'message': 'KEY_ERROR'}, status=401)            
+
+        except KeyError:
+            return JsonResponse({'message': 'KEY_ERROR'}, status=400)            
+
+        except JSONDecodeError:
+            return JsonResponse({'message': 'JSONDecodeError'}, status=400)            
+
+
+

리뷰: else 불필요
@@ -0,0 +1,76 @@
+import json,bcrypt,jwt
+from json.decoder     import JSONDecodeError
+
+from django.db.models import Q
+from django.views     import View
+from django.http      import JsonResponse
+
+from .models          import User
+from my_settings      import SECRET_KEY, ALGORITHM
+
+
+class SignUpView(View):
+    def post(self, request):
+        try:
+            data    = json.loads(request.body)
+            name    = data['name']
+            email   = data['email']
+            phone   = data['phone']
+            password= data['password']
+
+            if '.' not in email or '@' not in email:
+                return JsonResponse({'message':'error_email_form'}, status=401)            
+
+            if len(password)<8: 
+                return JsonResponse({'message':'error_password_form'}, status=401)            
+
+            if User.objects.filter(Q(name=name) | Q(email=email) | Q(phone=phone)).exists:
+                return JsonResponse({'message':'id_exist'}, status = 401)           
+               
+            hashed_password = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt())
+            decoded_password= hashed_password.decode('utf-8')
+            
+            User.objects.create(email=email, name=name, phone=phone, password=decoded_password)
+            return JsonResponse({'message':'success_signup'}, status = 201)
+
+        except KeyError:
+                return JsonResponse({'message': 'KEY_ERROR'}, status=400)            
+        
+        except JSONDecodeError:
+            return JsonResponse({'message': 'JSONDecodeError'}, status=400)        
+        
+
+class SignInView(View):
+    def post(self, request):
+        try:    
+            data    = json.loads(request.body)
+            id      = data['id']
+            password= data['password']
+            user  = User.objects.get(Q(name=id) | Q(email=id) | Q(phone=id))
+
+            if user is not id:
+                return JsonResponse({'message':'error_id_matching'}, status=401)
+
+            if user is id:
+                decoded_password = user.password
+                encoded_password = password.encode('utf-8')
+                bcrypt.checkpw(encoded_password, decoded_password.encode('utf-8'))
+                token = jwt.encode({'user':user.id}, SECRET_KEY, ALGORITHM)
+                return JsonResponse({'message':'success_signin', 'access_token':token}, status=201)
+            
+            return JsonResponse({'message':'error_password_matching'}, status = 401)
+
+        except User.MultipleObjectsReturned:
+            return JsonResponse({'message': 'KEY_ERROR'}, status=401)
+
+        except User.DoesNotExist:
+            return JsonResponse({'message': 'KEY_ERROR'}, status=401)            
+
+        except KeyError:
+            return JsonResponse({'message': 'KEY_ERROR'}, status=400)            
+
+        except JSONDecodeError:
+            return JsonResponse({'message': 'JSONDecodeError'}, status=400)            
+
+
+

리뷰: 성공 케이스에서 쓸 로직이기 때문에 아래로 위치시켜주세요.
@@ -0,0 +1,12 @@
+from django.db import models
+
+class User(models.Model):
+    email         = models.EmailField(max_length=50, unique=True)
+    phone         = models.CharField(max_length=11, null=True, unique=True)
+    full_name     = models.CharField(max_length=40, null=True)
+    user_name     = models.CharField(max_length=20, null=True, unique=True)
+    password      = models.CharField(max_length=70)
+    date_of_birth = models.DateField(null=True)
+
+    class Meta:
+        db_table = 'users'

리뷰: 불필요한 주석 없애주세요!
@@ -0,0 +1,12 @@
+from django.db import models
+
+class User(models.Model):
+    email         = models.EmailField(max_length=50, unique=True)
+    phone         = models.CharField(max_length=11, null=True, unique=True)
+    full_name     = models.CharField(max_length=40, null=True)
+    user_name     = models.CharField(max_length=20, null=True, unique=True)
+    password      = models.CharField(max_length=70)
+    date_of_birth = models.DateField(null=True)
+
+    class Meta:
+        db_table = 'users'

리뷰: 작성하신 여러가지 필드들 중 중복을 허용하면 안되는 필드들이 보이는데 그럴때 사용할 수 있는 옵션이 있습니다! 
찾아서 추가해주세요 😉
@@ -0,0 +1,12 @@
+from django.db import models
+
+class User(models.Model):
+    email         = models.EmailField(max_length=50, unique=True)
+    phone         = models.CharField(max_length=11, null=True, unique=True)
+    full_name     = models.CharField(max_length=40, null=True)
+    user_name     = models.CharField(max_length=20, null=True, unique=True)
+    password      = models.CharField(max_length=70)
+    date_of_birth = models.DateField(null=True)
+
+    class Meta:
+        db_table = 'users'

리뷰: 네넵!!
@@ -37,6 +37,8 @@ public PageReviewRes<ReviewRes> getPagedReviewsByTemplestayId(Long templestayId,
             throw new TemplestayCoreException(ErrorCode.REVIEW_NOT_FOUND);
         }
 
+        Long count = reviewRepository.countByTempleName(templeName);
+
         List<ReviewRes> reviewDtos = reviews.getContent().stream()
                 .map(review -> new ReviewRes(
                         review.getId(),
@@ -51,6 +53,7 @@ public PageReviewRes<ReviewRes> getPagedReviewsByTemplestayId(Long templestayId,
 
         return new PageReviewRes<>(
                 templestayId,
+                count,
                 page,
                 size,
                 reviews.getTotalPages(),

리뷰: 리뷰 전체 개수를 반환하여 프론트에서 페이징 처리에 도움을 받을 수 있을 것 같습니다! 굿
@@ -0,0 +1,37 @@
+[
+  {
+    "id": 1,
+    "img": "images/yoonhee/imgg.jpg",
+    "text": "한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한"
+  },
+  {
+    "id": 2,
+    "img": "images/yoonhee/imgg.jpg",
+    "text": "한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한"
+  },
+  {
+    "id": 3,
+    "img": "images/yoonhee/imgg.jpg",
+    "text": "한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한"
+  },
+  {
+    "id": 4,
+    "img": "images/yoonhee/imgg.jpg",
+    "text": "한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한"
+  },
+  {
+    "id": 5,
+    "img": "images/yoonhee/imgg.jpg",
+    "text": "한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한"
+  },
+  {
+    "id": 6,
+    "img": "images/yoonhee/imgg.jpg",
+    "text": "한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한"
+  },
+  {
+    "id": 7,
+    "img": "images/yoonhee/imgg.jpg",
+    "text": "한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한국어한"
+  }
+]

리뷰: 애국자 윤희님의 뜻 잘 알겠습니다.
@@ -1,9 +1,23 @@
 import React from 'react';
+import './Login.scss';
+import LoginForm from './LoginForm';
 
-class Login extends React.Component {
+class LoginYoonHee extends React.Component {
   render() {
-    return null;
+    return (
+      <article className="login-art">
+        <div className="log-in__main">
+          <h1 className="main-name">westagram</h1>
+          <div className="log-in">
+            <LoginForm />
+          </div>
+          <a className="find-ps" href="#!">
+            비밀번호를 잊으셨나요?
+          </a>
+        </div>
+      </article>
+    );
   }
 }
 
-export default Login;
+export default LoginYoonHee;

리뷰: props의 개념에 대해 잘 이해하셨네요!
하지만 이렇게 할 필요 없이, `<LoginForm>` 컴포넌트에서 withRouter import해서 감싸주시는 방식으로 하시는 게 좋을 것 같네요!
@@ -0,0 +1,75 @@
+.login-art {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  height: 100vh;
+  background-color: var(--color-boxgray);
+
+  .log-in__main {
+    display: flex;
+    flex-direction: column;
+    justify-content: space-evenly;
+    align-items: center;
+    width: 300px;
+    height: 350px;
+    background-color: white;
+    border: 1px solid var(--color-boxborder);
+  }
+
+  .main-name {
+    font-size: 40px;
+    font-weight: lighter;
+    font-family: 'Lobster', cursive;
+  }
+
+  .log-in {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+  }
+
+  .log-in__id,
+  .log-in__ps {
+    width: 230px;
+    height: 35px;
+    margin: 3px 0;
+    padding: 3px 10px;
+    border-radius: 5px;
+    border: 1px solid var(--color-boxborder);
+    color: var(--color-textgray);
+    background-color: var(--color-boxgray);
+  }
+
+  .find-ps {
+    text-decoration: none;
+    font-size: 13px;
+  }
+
+  .log-in__btn {
+    width: 230px;
+    height: 30px;
+    margin-top: 10px;
+    margin-bottom: 80px;
+    border-radius: 5px;
+    background-color: var(--color--btn-text);
+    border: none;
+    color: white;
+    font-weight: bold;
+  }
+  .disabled {
+    width: 230px;
+    height: 30px;
+    margin-top: 10px;
+    margin-bottom: 80px;
+    border-radius: 5px;
+    background-color: var(--color--btn-text-yet);
+    border: none;
+    color: white;
+    font-weight: bold;
+  }
+
+  .log-in > form {
+    display: flex;
+    flex-direction: column;
+  }
+}

리뷰: - 하나의 요소에 여러가지 속성을 부여하는 경우 중요도, 관련도에 따라서 나름의 convention을 지켜서 작성하는 것이 좋습니다.
- 일반적인 convention 은 아래와 같습니다. 아래와 같이 순서 적용해주세요.
    
    [CSS property 순서]
    
    - Layout Properties (position, float, clear, display)
    - Box Model Properties (width, height, margin, padding)
    - Visual Properties (color, background, border, box-shadow)
    - Typography Properties (font-size, font-family, text-align, text-transform)
    - Misc Properties (cursor, overflow, z-index)

- 리뷰하지 않은 부분도 참고해서 수정해주세요-!
@@ -0,0 +1,51 @@
+import React from 'react';
+import { withRouter } from 'react-router-dom';
+
+class LoginForm extends React.Component {
+  constructor() {
+    super();
+    this.state = { id: '', ps: '' };
+  }
+
+  goToMain = e => {
+    this.props.history.push('/main-yoonhee');
+  };
+
+  handleInput = e => {
+    this.setState({ [e.target.name]: e.target.value });
+  };
+
+  render() {
+    const { id, ps } = this.state;
+    const isAble = id.includes('@') && ps.length >= 5;
+    return (
+      <form>
+        <input
+          name="id"
+          className="log-in__id"
+          type="text"
+          placeholder="전화번호, 사용자 이름 또는 이메일"
+          onChange={this.handleInput}
+        />
+
+        <input
+          name="ps"
+          className="log-in__ps"
+          type="password"
+          placeholder="비밀번호"
+          onChange={this.handleInput}
+        />
+        <button
+          type="button"
+          className={`log-in__btn ${isAble ? '' : 'disabled'}`}
+          onClick={this.goToMain}
+          disabled={!isAble}
+        >
+          로그인
+        </button>
+      </form>
+    );
+  }
+}
+
+export default withRouter(LoginForm);

리뷰: 계산된 속성명 잘 활용해주셨네요! :)
@@ -0,0 +1,10 @@
+import React from 'react';
+
+class Comment extends React.Component {
+  render() {
+    const { innerText } = this.props;
+    return <li>{innerText}</li>;
+  }
+}
+
+export default Comment;

리뷰: map 메서드를 사용하시는 부분에서 key prop 부여해주시면 됩니다!
@@ -0,0 +1,59 @@
+import React from 'react';
+import Comment from './Comment';
+
+class CommentBox extends React.Component {
+  constructor(props) {
+    super(props);
+    this.state = { feedComment: '', commentList: [] };
+  }
+
+  handleInput = e => {
+    this.setState({ [e.target.name]: e.target.value });
+  };
+
+  addCommentByEnter = e => {
+    if (e.key === 'Enter') {
+      this.addComment();
+    }
+  };
+
+  addComment = () => {
+    const { feedComment, commentList } = this.state;
+    this.setState({
+      commentList: [...commentList, feedComment],
+      feedComment: '',
+    });
+  };
+
+  render() {
+    return (
+      <>
+        <div className="feed__comment-box">
+          <input
+            name="feedComment"
+            className="comment__input"
+            placeholder="댓글 달기..."
+            onChange={this.handleInput}
+            onKeyDown={this.addCommentByEnter}
+            value={this.state.feedComment}
+          />
+          <button
+            className="btn btn--hover comment__btn"
+            onClick={this.addComment}
+          >
+            게시
+          </button>
+        </div>
+        <div className="feed__comment">
+          <ul className="feed__comment-list">
+            {this.state.commentList.map((comment, index) => {
+              return <Comment key={index} innerText={comment} />;
+            })}
+          </ul>
+        </div>
+      </>
+    );
+  }
+}
+
+export default CommentBox;

리뷰: isKeyEnter라는 함수명은 key가 enter인지 아닌지를 판별하는 boolean 변수명으로 적합한 것 같네요.

함수의 동작에 대한 내용을 직관적으로 알 수 있는 동사형으로 작성해주세요!

ex) addCommentByEnter
@@ -0,0 +1,59 @@
+import React from 'react';
+import Comment from './Comment';
+
+class CommentBox extends React.Component {
+  constructor(props) {
+    super(props);
+    this.state = { feedComment: '', commentList: [] };
+  }
+
+  handleInput = e => {
+    this.setState({ [e.target.name]: e.target.value });
+  };
+
+  addCommentByEnter = e => {
+    if (e.key === 'Enter') {
+      this.addComment();
+    }
+  };
+
+  addComment = () => {
+    const { feedComment, commentList } = this.state;
+    this.setState({
+      commentList: [...commentList, feedComment],
+      feedComment: '',
+    });
+  };
+
+  render() {
+    return (
+      <>
+        <div className="feed__comment-box">
+          <input
+            name="feedComment"
+            className="comment__input"
+            placeholder="댓글 달기..."
+            onChange={this.handleInput}
+            onKeyDown={this.addCommentByEnter}
+            value={this.state.feedComment}
+          />
+          <button
+            className="btn btn--hover comment__btn"
+            onClick={this.addComment}
+          >
+            게시
+          </button>
+        </div>
+        <div className="feed__comment">
+          <ul className="feed__comment-list">
+            {this.state.commentList.map((comment, index) => {
+              return <Comment key={index} innerText={comment} />;
+            })}
+          </ul>
+        </div>
+      </>
+    );
+  }
+}
+
+export default CommentBox;

리뷰: 리뷰하지 않은 부분도 수정해주세요!
@@ -0,0 +1,59 @@
+import React from 'react';
+import Comment from './Comment';
+
+class CommentBox extends React.Component {
+  constructor(props) {
+    super(props);
+    this.state = { feedComment: '', commentList: [] };
+  }
+
+  handleInput = e => {
+    this.setState({ [e.target.name]: e.target.value });
+  };
+
+  addCommentByEnter = e => {
+    if (e.key === 'Enter') {
+      this.addComment();
+    }
+  };
+
+  addComment = () => {
+    const { feedComment, commentList } = this.state;
+    this.setState({
+      commentList: [...commentList, feedComment],
+      feedComment: '',
+    });
+  };
+
+  render() {
+    return (
+      <>
+        <div className="feed__comment-box">
+          <input
+            name="feedComment"
+            className="comment__input"
+            placeholder="댓글 달기..."
+            onChange={this.handleInput}
+            onKeyDown={this.addCommentByEnter}
+            value={this.state.feedComment}
+          />
+          <button
+            className="btn btn--hover comment__btn"
+            onClick={this.addComment}
+          >
+            게시
+          </button>
+        </div>
+        <div className="feed__comment">
+          <ul className="feed__comment-list">
+            {this.state.commentList.map((comment, index) => {
+              return <Comment key={index} innerText={comment} />;
+            })}
+          </ul>
+        </div>
+      </>
+    );
+  }
+}
+
+export default CommentBox;

리뷰: - `newfeedComment`라고 새로 선언하고 할당할 필요 없이, concat 메서드에 feedComment라는 state를 직접 넣어주셔도 될 것 같네요.
- concat 잘 사용해주셨는데, concat 대신에 spread operator를 사용해서 동일하게 구현해보실 수 있습니다.
연습한다고 생각하시고 찾아서 구현해보세요!
```suggestion
    const { feedComment, commentList } = this.state;
    
    this.setState({
      commentList: commentList.concat(feedComment),
      feedComment: '',
    });
```
@@ -0,0 +1,59 @@
+import React from 'react';
+import Comment from './Comment';
+
+class CommentBox extends React.Component {
+  constructor(props) {
+    super(props);
+    this.state = { feedComment: '', commentList: [] };
+  }
+
+  handleInput = e => {
+    this.setState({ [e.target.name]: e.target.value });
+  };
+
+  addCommentByEnter = e => {
+    if (e.key === 'Enter') {
+      this.addComment();
+    }
+  };
+
+  addComment = () => {
+    const { feedComment, commentList } = this.state;
+    this.setState({
+      commentList: [...commentList, feedComment],
+      feedComment: '',
+    });
+  };
+
+  render() {
+    return (
+      <>
+        <div className="feed__comment-box">
+          <input
+            name="feedComment"
+            className="comment__input"
+            placeholder="댓글 달기..."
+            onChange={this.handleInput}
+            onKeyDown={this.addCommentByEnter}
+            value={this.state.feedComment}
+          />
+          <button
+            className="btn btn--hover comment__btn"
+            onClick={this.addComment}
+          >
+            게시
+          </button>
+        </div>
+        <div className="feed__comment">
+          <ul className="feed__comment-list">
+            {this.state.commentList.map((comment, index) => {
+              return <Comment key={index} innerText={comment} />;
+            })}
+          </ul>
+        </div>
+      </>
+    );
+  }
+}
+
+export default CommentBox;

리뷰: 이 컴포넌트의 tag들에서 id와 className을 같이 부여하신 이유가 있을까요??
@@ -0,0 +1,59 @@
+import React from 'react';
+import Comment from './Comment';
+
+class CommentBox extends React.Component {
+  constructor(props) {
+    super(props);
+    this.state = { feedComment: '', commentList: [] };
+  }
+
+  handleInput = e => {
+    this.setState({ [e.target.name]: e.target.value });
+  };
+
+  addCommentByEnter = e => {
+    if (e.key === 'Enter') {
+      this.addComment();
+    }
+  };
+
+  addComment = () => {
+    const { feedComment, commentList } = this.state;
+    this.setState({
+      commentList: [...commentList, feedComment],
+      feedComment: '',
+    });
+  };
+
+  render() {
+    return (
+      <>
+        <div className="feed__comment-box">
+          <input
+            name="feedComment"
+            className="comment__input"
+            placeholder="댓글 달기..."
+            onChange={this.handleInput}
+            onKeyDown={this.addCommentByEnter}
+            value={this.state.feedComment}
+          />
+          <button
+            className="btn btn--hover comment__btn"
+            onClick={this.addComment}
+          >
+            게시
+          </button>
+        </div>
+        <div className="feed__comment">
+          <ul className="feed__comment-list">
+            {this.state.commentList.map((comment, index) => {
+              return <Comment key={index} innerText={comment} />;
+            })}
+          </ul>
+        </div>
+      </>
+    );
+  }
+}
+
+export default CommentBox;

리뷰: 위에 리뷰드린 내용이네요! index를 props로 넘겨주는 게 아니라, 이 부분에서 key={index}로 부여해주시면 될 것 같습니다!
@@ -0,0 +1,59 @@
+import React from 'react';
+import Comment from './Comment';
+
+class CommentBox extends React.Component {
+  constructor(props) {
+    super(props);
+    this.state = { feedComment: '', commentList: [] };
+  }
+
+  handleInput = e => {
+    this.setState({ [e.target.name]: e.target.value });
+  };
+
+  addCommentByEnter = e => {
+    if (e.key === 'Enter') {
+      this.addComment();
+    }
+  };
+
+  addComment = () => {
+    const { feedComment, commentList } = this.state;
+    this.setState({
+      commentList: [...commentList, feedComment],
+      feedComment: '',
+    });
+  };
+
+  render() {
+    return (
+      <>
+        <div className="feed__comment-box">
+          <input
+            name="feedComment"
+            className="comment__input"
+            placeholder="댓글 달기..."
+            onChange={this.handleInput}
+            onKeyDown={this.addCommentByEnter}
+            value={this.state.feedComment}
+          />
+          <button
+            className="btn btn--hover comment__btn"
+            onClick={this.addComment}
+          >
+            게시
+          </button>
+        </div>
+        <div className="feed__comment">
+          <ul className="feed__comment-list">
+            {this.state.commentList.map((comment, index) => {
+              return <Comment key={index} innerText={comment} />;
+            })}
+          </ul>
+        </div>
+      </>
+    );
+  }
+}
+
+export default CommentBox;

리뷰: 그리고 cur이라는 변수명은 어떤 데이터를 가지고 있는지 명확하지 않은데, 해당 변수가 담고 있는 데이터에 대한 내용이 좀 더 직관적으로 드러날 수 있도록 수정해주세요!

ex) comment