No.
2022-01-16
  • Jan
  • Feb
  • Mar
  • Apr
  • May
  • Jun
  • Jul
  • Aug
  • Sep
  • Oct
  • Nov
  • Dec
  • Sun
  • Mon
  • Tue
  • Wed
  • Thu
  • Fri
  • Sat
  • 27
  • 28
  • 29
  • 30
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

やったこと

今日は、ハッカソンのバックエンド班とミーティングしながらコードの修正をした。
そこで以前までPOSTする際にCORSerrorと400errorが出ていた部分を解消した。

JSON形式で遅れていなかったが故にエラー

以前まで

const data = {
  title: recruteTitle,
  beginTime: recruteStartDate,
  endTime: recruteEndDate,
}
await http.post("/posts", data)
.then((res) => {
  console.log(res)
})
.catch((res) => console.log(res))
navigate("/home");
};

この形でPOSTをしていたため、400errorが出ていた。
JSON形式で遅れていなかったためである。
400以外の形でエラー表示してくれえよとは思ったがww

解決策としては、

const data = JSON.stringify({
  "title": recruteTitle,
  "beginTime": recruteStartDate,
  "endTime": recruteEndDate,
})

JSON.stringify()でJSON化してからPOSTしたらちゃんと通った。
あと、Number型で送る内容をstring型で送っていたのも問題だった。

Storybook * React

複合的なコンポーネントを組み立てる

TaskListのstoryファイル

import React from 'react';
import TaskList from './TaskList';
import * as TaskStories from './Task.stories';
export default {
  component: TaskList,
  title: 'TaskList',
  decorators: [story => <div style=>{story()}</div>],
};
const Template = args => <TaskList {...args} />;
export const Default = Template.bind({});
Default.args = {
  // Shaping the stories through args composition.
  // The data was inherited from the Default story in task.stories.js.
  tasks: [
    { ...TaskStories.Default.args.task, id: '1', title: 'Task 1' },
    { ...TaskStories.Default.args.task, id: '2', title: 'Task 2' },
    { ...TaskStories.Default.args.task, id: '3', title: 'Task 3' },
    { ...TaskStories.Default.args.task, id: '4', title: 'Task 4' },
    { ...TaskStories.Default.args.task, id: '5', title: 'Task 5' },
    { ...TaskStories.Default.args.task, id: '6', title: 'Task 6' },
  ],
};
export const WithPinnedTasks = Template.bind({});
WithPinnedTasks.args = {
  // Shaping the stories through args composition.
  // Inherited data coming from the Default story.
  tasks: [
    ...Default.args.tasks.slice(0, 5),
    { id: '6', title: 'Task 6 (pinned)', state: 'TASK_PINNED' },
  ],
};
export const Loading = Template.bind({});
Loading.args = {
  tasks: [],
  loading: true,
};
export const Empty = Template.bind({});
Empty.args = {
  // Shaping the stories through args composition.
  // Inherited data coming from the Loading story.
  ...Loading.args,
  loading: false,
};

デコレータ

export default {
  component: TaskList,
  title: 'TaskList',
  decorators: [story => <div style=>{story()}</div>],
};

デコレーターを使ってストーリーに任意のラッパーを設定できる
上記のコードでは、decorators というキーをデフォルトエクスポートに追加し、描画するコンポーネントの周りに padding を設定してる

一通りチュートリアルをやったがなかなか身に付かなかった。
実際に描くのが一番な気もしてきた