Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

/itemsエンドポイントのファイルを分割&削除ボタン追加 #35

Merged
merged 3 commits into from
Sep 3, 2024

Conversation

toririm
Copy link
Member

@toririm toririm commented Aug 30, 2024

@Lailai0477 はこのPRの Files changed を眺めて
自分の実装箇所(clientAction)がどのようにリファクタされたかにフォーカスして読んでみてください。

読み終わったら、便宜上このPRのレビューをapprovedに変更し、マージの作業をお願いします

次の実装の指示も書いてあります。
このPRのコメントだけで理解出来たら、そのまま実装
まだ解説してほしい部分があれば、Slackでメンションしてください

ref

Copy link
Contributor

github-actions bot commented Aug 30, 2024

Visit the preview URL for this PR (updated for commit 3831396):

https://cafeore-2024--pr35-refactor-apis-8bwpxro5.web.app

(expires Fri, 06 Sep 2024 19:35:04 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: b62dcde668e26b6280dd8317f3f875013f6f22f5

Comment on lines +5 to +16
export const action: ClientActionFunction = async (args) => {
const { request } = args;
switch (request.method) {
case "POST":
return addItem(args);
// case "DELETE":
// return deleteItem(args);
default:
console.error("Invalid method", request.method);
return new Response(null, { status: 405 });
}
};
Copy link
Member Author

@toririm toririm Aug 30, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

items.tsxの中に書かれていたclientActionを、action.tsとして別ファイルに切り出しています。

httpリクエストのmethodに応じてハンドリングする関数が分岐してることに注意してください

@toririm toririm changed the title エンドポイントのファイルを分割&削除ボタン追加 /itemsエンドポイントのファイルを分割&削除ボタン追加 Aug 30, 2024
Comment on lines +18 to +19
// todo: implement delete item
console.error("Not implemented: delete item", itemId);
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

つぎ、らいらいにはこの関数の実装をやってほしいです!

この2行を消して実装に取り掛かってください

Comment on lines +52 to +55
<Form method="DELETE">
<input type="hidden" name="itemId" value={item.id} />
<Button type="submit">削除</Button>
</Form>
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

各アイテムに削除ボタンを追加
ここではhttpリクエストのDELETEメソッドを使用するよう指定しています

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

〈すごい細かい話〉 ※読み飛ばしてOK

やたらhttpリクエストって言ってるけど、今回はすべてがブラウザ上で動作するSPAなので、実態はJavaScriptのオブジェクトでしかないです。

こいつ
https://developer.mozilla.org/ja/docs/Web/API/Response

import { itemRepository } from '~/repositories/item';

import type { action as clientAction } from "./action";
export { action as clientAction } from "./action";
Copy link
Member Author

@toririm toririm Aug 30, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

items/route.tsxが以前のitems.tsxと同じ内容を含んでいます

この箇所でaction.tsのactionをclientActionとしてexportすることで、route.tsxの中にclientActionを直接書いたのと同じ作用を生み出しています

Remixでは、ページのJSX(htmlっぽいやつ)とactionを同じファイルに書かなきゃいけないルールですが、こうすることによって、actionのファイル分割を実現しています

Copy link
Collaborator

@Lailai0477 Lailai0477 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@Lailai0477 Lailai0477 merged commit 1fb4e20 into main Sep 3, 2024
2 checks passed
@Lailai0477 Lailai0477 deleted the refactor/apis branch September 3, 2024 07:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants