componentDidMount() を使用して Arrow 関数でライフサイクルを使用できますか? クラスコンポーネントを機能コンポーネントに変換しようとしています。
以下の別のプロジェクトでコンテンツの多いブログを作成しました。このブログをメイン プロジェクトの blog.js ページに追加したいと考えています。
機能するオリジナルのコンテンツ満載のブログ。
ブログ.js
import React from "react";
import "./App.css";
import { client } from "./client";
import Posts from "./components/blog/Posts";
class App extends React.Component {
state = {
articles: [],
};
componentDidMount() {
client
.getEntries()
.then((response) => {
console.log(response);
this.setState({
articles: response.items,
});
})
.catch(console.error);
}
render() {
return (
<div className="App">
<div className="container">
<header>
<div className="wrapper">
<span>React and Content</span>
</div>
</header>
<main>
<div className="blog__page">
<h1 class="blog__page__header">ZILAH MUSIC PUBLISHING NEWS</h1>
<div className="blogs">
<div className="wrapper">
<Posts posts={this.state.articles} />
</div>
</div>
</div>
</main>
</div>
</div>
);
}
}
デフォルトのアプリをエクスポートします。
useEffect を追加したところ、状態が未定義になりました
useEffect(() => {
client
.getEntries()
.then((response) => {
console.log(response);
this.setState({
articles: response.items,
});
})
.catch(console.error);
}, []);
以前に実行していたページを複製し、ブログを含めたいのですが、ここに入力した画像の説明を変換する際に問題があります
import React, { useEffect, useState } from "react";
import { Link, Redirect } from "react-router-dom";
import { connect } from "react-redux";
import PropTypes from "prop-types";
import { client } from "../../client";
import Posts from "../../components/blog/Posts";
import "./Blog.css";
class App extends React.Component inside an arrow function
const Blog = ({ isAuthenticated }) => {
if (isAuthenticated) {
return <Redirect to="/dashboard" />;
}
useEffect(() => {
client
.getEntries()
.then((response) => {
console.log(response);
this.setState({
articles: response.items,
});
})
.catch(console.error);
}, []);
return (
<React.Fragment>
<div className="App">
<div className="container">
<header>
<div className="wrapper">
<span>React and Content</span>
</div>
</header>
<main>
<div className="blog__page">
<h1 className="blog__page__header">
ZILAH MUSIC PUBLISHING NEWS
</h1>
<div className="blogs">
<div className="wrapper">
<Posts posts={this.state.articles} />
</div>
</div>
</div>
</main>
</div>
</div>
</React.Fragment>
);
};
Bog.propTypes = {
isAuthenticated: PropTypes.bool,
};
const mapStateToProps = (state) => ({
isAuthenticated: state.auth.isAuthenticated,
});
export default connect(mapStateToProps)(Blog);