Sha256: 675ae57d3a3481aa57af8031e0321a64238e75830cf61bcc5ef7222f0e8166ec

Contents?: true

Size: 853 Bytes

Versions: 1

Compression:

Stored size: 853 Bytes

Contents

import React, { useEffect, useState } from "react";
import PropTypes from "prop-types";

import store from "stores/user";
import Article from "components/user/Article";
import ArticleModel from "models/Article";

function ArticleList(props) {
  const [articles, setArticles] = useState(props.articles);

  useEffect(() => {
    const unsubscribe = store.subscribe(() =>
      setArticles(store.getState().articles)
    );

    return () => {
      unsubscribe();
    };
  });

  const list = articles.map(article => (
    <Article
      key={article.id}
      article={article}
      onArticleDestroyed={props.onArticleDestroyed}
    />
  ));

  return <>{list}</>;
}

ArticleList.propTypes = {
  articles: PropTypes.arrayOf(PropTypes.instanceOf(ArticleModel)).isRequired,
  onArticleDestroyed: PropTypes.func.isRequired
};

export default ArticleList;

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
loco-rails-3.0.4 test/dummy/frontend/js/containers/user/ArticleList.js