😺

JavaScript: ネイティブなビルドインを魔改造しようとした話

2024/07/02に公開

Arrayを拡張したContentsクラス

そのContentsクラスからnewしたcontentsが引数に渡ってきている

const Messages = ({ room, contents, scrollingRef }) => {
  const [messages, setMessages] = useState([]);
  useEffect(() => {
    // INFO: 購読
    contents.onSnapshot((data) => {
      setMessages(data);
    });
  }, []);

  // INFO: "extends Array" したから。extends Arrayしてmapつかいたかったのに本末転倒
  // let messages = [];
  // for (let i = 0; i < contents.length; i++) {
  //   messages.push(contents[i]);
  // }
  return (
    <>
      {messages.map((content, i) => <Message content={content} scrollingRef={scrollingRef} index={i} key={content.id} />)}
    </>
  );
};
  • ContentsクラスはArrayを拡張している
  • Contentsクラスは1つ以上のメンバ変数を持っている
  • contents.lengthは正しい値を返した
  • contents.mapなどを使うものなら、エラーがでるぜ!!!!!

Discussion