forked from AdaGold/react-chatlog
-
Notifications
You must be signed in to change notification settings - Fork 153
Expand file tree
/
Copy pathApp.js
More file actions
45 lines (41 loc) · 1.1 KB
/
App.js
File metadata and controls
45 lines (41 loc) · 1.1 KB
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import React from 'react';
import './App.css';
import { useState } from 'react';
import ChatLog from './components/ChatLog';
import chatMessages from './data/messages.json';
const App = () => {
const [messageData,setMessageData] = useState(chatMessages)
const likeMessage = (id) => {
setMessageData(messageData =>
messageData.map(message => {
if (message.id === id) {
const button = document.querySelectorAll('button.like')[id-1]
button.innerHTML = message.liked ? '🤍' : '❤️'
return {...message, liked: !message.liked}
} else {
return message;
}
}))
}
const countLikes = (messageData) => {
return messageData.reduce((total,message) =>{
return total + (message.liked ? 1 : 0);
}, 0
)
}
const likesCount = `${countLikes(messageData)} ❤️s`
return (
<div id="App">
<header>
<h1>Chat Log</h1>
<h2>{likesCount}</h2>
</header>
<main>
<ChatLog
entries={messageData}
onLikeMessage={likeMessage}></ChatLog>
</main>
</div>
);
};
export default App;