コメントの追加、削除
reacには非常に重要な部分が啓発された.純粋なJavaScriptとの最大の違いは、自動的にレンダリングできることです.
したがって、再読み込み時には、元の配列に直接貼り付けるのではなく、コピーされた配列にコンテンツを追加するだけです.
そのうちの1つは
mdnでいう意味は
構造分解割り当て構文はJavaScript式で、配列またはオブジェクトの属性を分解し、その値を各変数に含めることができます.
困難簡単に言えば、新しいレプリカを作成し、すべてのレプリカを分解して使用したり、アレイではなくレプリカ全体を再コピーしたりすることができます.
次のコードで使用する例は、次のとおりです.
const newCommentData = [
...commentsList,
{
id: Math.floor(Math.random() * 100),
userId: 'jonghyeok',
text: newComment,
isLiked: false,
createdAt:「16分前」
},
];
setCommentsList(newCommentData);
setNewComment('');
};
const handleLike = id => {
const index = commentsList.findIndex(value => value.id === id);
const isLikedCommentList = [...commentsList];
if (isLikedCommentList[index].isLiked === true) {
isLikedCommentList[index].isLiked = false;
} else {
isLikedCommentList[index].isLiked = true;
}
setCommentsList(isLikedCommentList);
};
findIndex()
したがって、再読み込み時には、元の配列に直接貼り付けるのではなく、コピーされた配列にコンテンツを追加するだけです.
そのうちの1つは
구조분해할당(...변수)
です構造分解の割り当て
mdnでいう意味は
構造分解割り当て構文はJavaScript式で、配列またはオブジェクトの属性を分解し、その値を各変数に含めることができます.
困難簡単に言えば、新しいレプリカを作成し、すべてのレプリカを分解して使用したり、アレイではなくレプリカ全体を再コピーしたりすることができます.
次のコードで使用する例は、次のとおりです.
const newCommentData = [
...commentsList,
{
id: Math.floor(Math.random() * 100),
userId: 'jonghyeok',
text: newComment,
isLiked: false,
createdAt:「16分前」
},
];
setCommentsList(newCommentData);
setNewComment('');
};
const handleDelete = id => {
const index = commentsList.findIndex(value => value.id === id);
const deleteCommentList = [
...commentsList.slice(0, index),
...commentsList.slice(index + 1),
];
setCommentsList(deleteCommentList);
};const handleLike = id => {
const index = commentsList.findIndex(value => value.id === id);
const isLikedCommentList = [...commentsList];
if (isLikedCommentList[index].isLiked === true) {
isLikedCommentList[index].isLiked = false;
} else {
isLikedCommentList[index].isLiked = true;
}
setCommentsList(isLikedCommentList);
};
findIndex()
与えられた判別関数を満たす配列の最初の要素のインデックスを返します.満足できる要素がない場合は、-1を返します.
コメントを追加したり、削除したり、ボタンを賛成したりする方法.
すなわち,新しい配列を作成し,反応中に自動的に現れることを可能にする.push
splice
は自動レンダリングできません.1つのコメントブロックは、テキストではなく、複数の要素を持つ配列内のオブジェクトで構成されます.つまり、削除したいコメントのみを削除するためには、削除したい配列のオブジェクト、すなわちインデックスにアクセスする必要があります.このため、1つのコメントを追加するたびに、고유한ID
のコメントが提供されます.このため、このIDをクリックイベントが発生したIDと比較して、同じIDを持っている場合のみ削除できるようにすることができる.作成したコードを表示します.
const handleDelete = id => {
const index = commentsList.findIndex(value => value.id === id);
const deleteCommentList = [
...commentsList.slice(0, index),
...commentsList.slice(index + 1),
];
setCommentsList(deleteCommentList);
};
削除しようとするコメントにクリックイベントが発生した場合、削除ボタンがクリックされた고유한id
と削除されたコメント고유한id
とが同時に削除イベントが発生する.ここで重要な部分は、私が望んでいるインデックスだけが削除されます.私が欲しいインデックスを削除するために、削除するインデックスを見つけて、前のインデックスと後ろのインデックス구조분해할당
を前後のインデックスに結合して、新しい配列を形成します!const newCommentData = [
...commentsList,
{
id: Math.floor(Math.random() * 100),
userId: 'jonghyeok',
text: newComment,
isLiked: false,
createdAt: '16분전',
},
];
setCommentsList(newCommentData);
setNewComment('');
};
const handleCommentEnter = e => {
if (e.key === 'Enter') {
addComment();
}
};
const handleDelete = id => {
const index = commentsList.findIndex(value => value.id === id);
const deleteCommentList = [
...commentsList.slice(0, index),
...commentsList.slice(index + 1),
];
setCommentsList(deleteCommentList);
};
const handleMainLike = () => {
if (mainLike === true) {
setMainLike(false);
} else {
setMainLike(true);
}
};
const handleLike = id => {
const index = commentsList.findIndex(value => value.id === id);
const isLikedCommentList = [...commentsList];
if (isLikedCommentList[index].isLiked === true) {
isLikedCommentList[index].isLiked = false;
} else {
isLikedCommentList[index].isLiked = true;
}
setCommentsList(isLikedCommentList);
};
Reference
この問題について(コメントの追加、削除), 我々は、より多くの情報をここで見つけました
https://velog.io/@dev_marco/React-댓글-추가-삭제
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
const newCommentData = [
...commentsList,
{
id: Math.floor(Math.random() * 100),
userId: 'jonghyeok',
text: newComment,
isLiked: false,
createdAt: '16분전',
},
];
setCommentsList(newCommentData);
setNewComment('');
};
const handleCommentEnter = e => {
if (e.key === 'Enter') {
addComment();
}
};
const handleDelete = id => {
const index = commentsList.findIndex(value => value.id === id);
const deleteCommentList = [
...commentsList.slice(0, index),
...commentsList.slice(index + 1),
];
setCommentsList(deleteCommentList);
};
const handleMainLike = () => {
if (mainLike === true) {
setMainLike(false);
} else {
setMainLike(true);
}
};
const handleLike = id => {
const index = commentsList.findIndex(value => value.id === id);
const isLikedCommentList = [...commentsList];
if (isLikedCommentList[index].isLiked === true) {
isLikedCommentList[index].isLiked = false;
} else {
isLikedCommentList[index].isLiked = true;
}
setCommentsList(isLikedCommentList);
};
Reference
この問題について(コメントの追加、削除), 我々は、より多くの情報をここで見つけました https://velog.io/@dev_marco/React-댓글-추가-삭제テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol