Update Array on the same component - Gianni-A/Frycolor-client GitHub Wiki

Updating a property of an Array to show on the component the results in real time.

import React, { useState } from 'react';
import { calculatePost } from '../util/Utils';

function CommentPost(props) {
const[listResponses, setListResponses] = useState(props.listResponses);

function likeAnimationComment(statusLikeCom, nwResId) {
  
  const objIndex = listResponses.findIndex((obj => obj.nwResId == nwResId));

  let items = [...listResponses];
  let item = {...listResponses[objIndex]};
  
  if(statusLikeCom) {
    item.contReactions -= 1;
    item.userLike = false;
  } else {
    item.contReactions += 1;
    item.userLike = true;
  }

  items[objIndex] = item;
  setListResponses(items);
  
  props.likeAnimationCom(nwResId);
}

return listResponses.map((response, index) => (

  <div className="comment_container" key={index}>
    <div className="data_container ">
      <div className="row">
        <div className="col-md-10">
          <div className="username_comment">
          <a href="#">{response.nameUser}</a><span className="text-date-post"> - {calculatePost(response.dateTime)}</span>
          </div>
          <div className="text_comment">
            <p>{response.comment}</p>
          </div>
        </div>
        <div className="col-md-2">
          <div className={response.userLike ? 'heart is-active' : 'heart'} onClick={() => likeAnimationComment(response.userLike, response.nwResId)}></div>
          <span className="likes_value">{response.contReactions}</span>
        </div>
      </div>
    </div>
  </div>
))

}

export default CommentPost;

⚠️ **GitHub.com Fallback** ⚠️