神戸学院大学 経営学部 林坂ゼミ

React 入門トップページ

« 戻る 次へ »

React 入門

TypeScript コメント掲示板アプリの開発

CreateForm コンポーネントの雛形を作る

コメントを新規投稿するためのフォームについてその雛形を作成します.まず,すでに作成しているはずの src/components/ フォルダに CreateForm.tsx という名前のファイルを作成します.このとき,ファイル名の先頭と単語の先頭が大文字になるように注意してください.Visual Studio Code では rafce と入力した後に Tab を押して次の雛形を作成します.(その他のエディタであれば下のコードをコピーして利用してください.)

src/components/CreateForm.tsx
  1. import React from 'react'
  2.  
  3. const CreateForm = () => {
  4. return (
  5. <div>CreateForm</div>
  6. )
  7. }
  8.  
  9. export default CreateForm

今作成した CreateForm コンポーネントを CommentListPage コンポーネントに埋め込みます.まず,先頭で CreateForm

src/components/CommentListPage.tsx(抜粋)
  1. import React from 'react'
  2. import Comment from './Comment';
  3. import CreateForm from './CreateForm';

次に,return() の中で,{commentItems} の直後に <CreateForm /> を入力して埋め込みます.

src/components/CommentListPage.tsx(抜粋)
  1. return (
  2. <div className="container">
  3. <h1>コメント一覧</h1>
  4. {commentItems}
  5.  
  6. <CreateForm />
  7. </div>
  8. )

ブラウザで確認すると,CreateForm コンポーネントが CommentListPage に埋め込まれていることが確認できました.

ts-2024-17

続いて CreateForm にテキストボックスなどのフォームを配置します.このとき,タイトルと本文を入力するテキストボックスには textInput というクラス名を設定しておきます.

src/components/CreateForm.tsx
  1. import React from 'react'
  2.  
  3. const CreateForm = () => {
  4. return (
  5. <>
  6. <hr />
  7. <article>
  8. <h2>コメントの新規投稿</h2>
  9. <form>
  10. <div>
  11. <label>
  12. タイトル:
  13. <input
  14. type="text"
  15. className="textInput"
  16. />
  17. </label>
  18. </div>
  19. <div>
  20. <label>
  21. 本文:
  22. <input
  23. type="text"
  24. className="textInput"
  25. />
  26. </label>
  27. </div>
  28. <div>
  29. <button>コメントの追加</button>
  30. </div>
  31. </form>
  32. </article>
  33. </>
  34. )
  35. }
  36.  
  37. export default CreateForm

上で配置した textInput クラスのテキストボックスについて,index.css でスタイリングします.

src/index.css
  1. .textInput {
  2. width: 100%;
  3. padding: 4px;
  4. margin: 0 0 8px;
  5. box-sizing: border-box;
  6. }

ブラウザで表示内容と動作を確認します.現時点ではテキストボックスに入力できます.一方で,ボタンを押してもまだ何も起こらないはずです.

ts-2024-18

目次に戻る