Ich habe ein Kommentarsystem in meinem Blog. Die Kommentare werden live über WebSockets aktualisiert. Während die Kommentare aktualisiert werden, muss der Besitzer natürlich in der Lage sein, ihre Kommentare zu bearbeiten. Ich möchte die In-Place-Bearbeitung aktivieren (was bedeutet, dass der Kommentar durch ein Textfeld und die Schaltflächen zum Speichern/Verwerfen ersetzt wird). Meine React-App abonniert Socket-Ereignisse und ändert das Array comments
im Komponentenstatus. Dies bedeutet, dass, während der Benutzer einen Kommentar bearbeitet, wenn etwas Neues hereinkommt, die Bearbeitung brutal gestoppt wird.Stoppen Sie die Live-Updates, während der Benutzer den Kommentar bearbeitet?
Having said dies, dachte ich an zwei mögliche Ansätze: 1. Während der Benutzer einen Kommentar bearbeitet, stoppen die Live-Updates 2. Halten Sie die Aktualisierung der Kommentare (dh vorübergehend Socket-Ereignisse ignorieren), sondern blättern halten auf den Kommentar Editor (mit dem ich nicht umzugehen weiß)
Ich denke, es wäre dumm, die Live-Updates zu stoppen, während der Benutzer einen Kommentar bearbeitet, also frage ich Sie, wie sollte man den Editor dort halten beim Aktualisieren von Kommentaren?
Mehr über meine Anwendungsstruktur:
ich die Komponente <PostComments />
dessen haben state
enthält das Array comments
. Das Array wird dann als ein Bündel von <Comment />
gemacht.
renderComments =() => {
const { comments } = this.state;
return comments.map(comment => {
return (
<Comment key={comment['comment_id']} data={comment} />
);
});
};
Die <Comment />
Komponente statische Daten zu machen (dh ein Objekt mit einer Standardform
export const commentDataType = React.PropTypes.shape({
comment_id: React.PropTypes.number.isRequired,
user_info: React.PropTypes.shape({
preferred_name: React.PropTypes.string.isRequired,
profile_picture: React.PropTypes.string.isRequired,
}).isRequired,
post_timestamp: React.PropTypes.number.isRequired,
comment_text: React.PropTypes.string.isRequired,
});
Und diese es irgendwie bekommt Danke !
Idealerweise würden Sie die Kommentare auch während der Bearbeitung aktualisieren, Sie aktualisieren sie einfach nicht. –
Also sollte ich so etwas wie 'Array.filter' auf' comments' machen und das immer noch behalten? – Victor
Idealerweise erstellen Sie eine Kopie einer Datei, die gerade bearbeitet wird, und bearbeiten stattdessen die Kopie. Auf diese Weise können Sie Änderungen genauso einfach verwerfen, und Aktualisierungen beeinträchtigen nicht das, was der Benutzer gerade tut.Es ist nur der eine Benutzer, der den einen Kommentar aktualisieren kann, oder? –