diff --git a/components/member-list.js b/components/member-list.js
index 4d477ee..f1d67b7 100644
--- a/components/member-list.js
+++ b/components/member-list.js
@@ -1,25 +1,43 @@
import { html, Component } from "/lib/index.js";
-function MemberItem(props) {
- function handleClick(event) {
- event.preventDefault();
- props.onClick();
+class MemberItem extends Component {
+ constructor(props) {
+ super(props);
+
+ this.handleClick = this.handleClick.bind(this);
}
- var url = "irc:///" + encodeURIComponent(props.nick) + ",isnick";
- return html`
-
- ${props.nick}
-
- `;
+ shouldComponentUpdate(nextProps) {
+ return this.props.nick !== nextProps.nick;
+ }
+
+ handleClick(event) {
+ event.preventDefault();
+ this.props.onClick();
+ }
+
+ render() {
+ var url = "irc:///" + encodeURIComponent(this.props.nick) + ",isnick";
+ return html`
+
+ ${this.props.nick}
+
+ `;
+ }
}
-export default function MemberList(props) {
- return html`
-
- ${Array.from(props.members.entries()).sort().map(([nick, membership]) => html`
- <${MemberItem} key=${nick} nick=${nick} membership=${membership} onClick=${() => props.onNickClick(nick)}/>
- `)}
-
- `;
+export default class MemberList extends Component {
+ shouldComponentUpdate(nextProps) {
+ return this.props.members !== nextProps.members;
+ }
+
+ render() {
+ return html`
+
+ ${Array.from(this.props.members.entries()).sort().map(([nick, membership]) => html`
+ <${MemberItem} key=${nick} nick=${nick} membership=${membership} onClick=${() => this.props.onNickClick(nick)}/>
+ `)}
+
+ `;
+ }
}