0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ChatGPTでアプリ開発記 20250430

Last updated at Posted at 2025-04-30

投稿に時間を追加する

不明箇所は、一行ずつ理解する。

import React, { useState } from 'react';

function App() {
  const [text, setText] = useState('');
  const [posts, setPosts] = useState([]);

//イベントハンドラ関数といい、フォームが送信されたときに呼ばれる関数で、
//(e)は「イベントオブジェクト」といって、「ボタン押したよ!」という情報。
  const handleSubmit = (e) => {
  
//ブラウザの「フォーム送信したらページをリロードする」という標準動作を止める命令です。
//これをしないと、投稿のたびにページがリロードされる。
    e.preventDefault();
    
//入力が空っぽなら、何もしないで終わるようにしています。
//スペースだけの投稿を防ぐために、trim()で空白を除去しています。
    if (text.trim() === '') return;

    const now = new Date();
    const formattedTime = now.toLocaleString('ja-JP', {
      year: 'numeric',
      month: '2-digit',
      day: '2-digit',
      hour: '2-digit',
      minute: '2-digit'
    });
    
//新しい投稿データを作っています。
//入力テキストと投稿時間を1つのオブジェクトにまとめた形です。
    const newPost = {
      text: text,
      time: formattedTime
    };

    setPosts([newPost, ...posts])
    
//投稿したら、フォームの中身を空っぽにリセットしています。
    setText('');
  };

//ここから「画面に表示する内容」を書く。
  return (
    <div style={{ padding: '2rem', fontFamily: 'sans-serif' }}>
      <h1>SNS</h1>
      
<!//投稿用のフォーム開始。
//onSubmitで、フォームを送信したときにhandleSubmit関数を呼び出します。
      <form onSubmit={handleSubmit}>
        <textarea
          value={text}
          onChange={(e) => setText(e.target.value)}
          placeholder="今なにしてる?"
          rows="4"
          cols="50"
          style={{ display: 'block', width: '100%', marginBottom: '1rem' }}
        />
        <button type="submit">投稿する</button>
      </form>

      <div style={{ marginTop: '2rem' }}>
        <h2>投稿一覧</h2>
        {posts.map((post, index) => (
          <div key={index} style={{ padding: '1rem', borderBottom: '1px solid #ccc' }}>
            <div style={{ fontSize: '0.8rem', color: '#666' }}>{post.time}</div>
            <div>{post.text}</div>
          </div>
        ))}
      </div>
    </div >
  );
}

//このAppコンポーネントを他の場所でも使えるように「エクスポート」しています。
export default App;

スクリーンショット 2025-04-29 12.30.15.png

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?