3.1.4 Frontend (React) Example

// src/features/feed/Feed.jsx
import React, { useEffect, useState } from 'react';
import axios from 'axios';
import { getSocket } from '../../services/socket';

function Feed() {
  const [posts, setPosts] = useState([]);

  useEffect(() => {
    // Initial fetch
    axios.get('/api/posts')
      .then(res => setPosts(res.data))
      .catch(err => console.error(err));

    // Real-time updates
    const socket = getSocket();
    socket.on('newPost', (post) => {
      setPosts(prev => [post, ...prev]);
    });

    return () => {
      socket.off('newPost');
    };
  }, []);

  return (
    <div>
      <h2>SUM+1 Feed</h2>
      {posts.map(p => (
        <div key={p.id}>
          <p>{p.content}</p>
          <small>By: {p.user?.username} on {new Date(p.createdAt).toLocaleString()}</small>
        </div>
      ))}
    </div>
  );
}

export default Feed;

Last updated