Skip to content

Instantly share code, notes, and snippets.

View yukikim's full-sized avatar
😵
It is busy

takayuki_kimura yukikim

😵
It is busy
View GitHub Profile
@yukikim
yukikim / sample.md
Created November 14, 2024 07:46
React非同期コンポーネント

TypeScript と React を使って非同期 (async) コンポーネントを作成する方法について説明します。非同期処理が必要な場合、通常は API リクエストやデータフェッチを行うことが多いです。このため、非同期コンポーネントを作成するには、React の useEffectuseState フックを利用して、非同期処理をコンポーネント内で管理することが一般的です。

以下に、非同期コンポーネントの作成手順を示します。

1. 基本的な非同期コンポーネント

非同期データを取得する最も一般的な方法は、useEffect フックを使用してデータを取得し、useState フックでそのデータを保持することです。

import React, { useEffect, useState } from 'react';
@yukikim
yukikim / sample.md
Created November 14, 2024 07:29
Node jsonToCsv

TypeScript と Node.js を使って JSON データを CSV に変換する方法について解説します。

以下では、json2csv ライブラリを使って簡単に JSON を CSV に変換する方法を紹介します。

1. json2csv ライブラリのインストール

json2csv は、Node.js の環境で JSON を CSV に変換するための人気のライブラリです。

@yukikim
yukikim / sample.ts
Created November 14, 2024 06:50
Node[typescript]APIからデータを
// axios を使う方法
import axios from 'axios';
async function fetchData() {
try {
const response = await axios.get('https://api.example.com/data');
console.log('データ取得成功:', response.data);
} catch (error) {
console.error('データ取得エラー:', error);
@yukikim
yukikim / Sample.tsx
Created November 13, 2024 05:05
アコーディオン
TypeScript と React を使ってアコーディオンを作成する方法をご紹介します。以下は、シンプルなアコーディオンコンポーネントの例です。
### 1. 必要な環境をセットアップ
まずはプロジェクトをセットアップし、必要なパッケージをインストールします。
```bash
npx create-react-app my-accordion-app --template typescript
cd my-accordion-app
npm start
@yukikim
yukikim / sample.tsx
Last active November 10, 2024 23:53
[tsx]コンポーネント間のデータ共有
//### 1. プロパティ(Props)を使う
//親コンポーネントから子コンポーネントにデータを渡す最も基本的な方法です。
// ParentComponent.tsx
import React from 'react';
import ChildComponent from './ChildComponent';
@yukikim
yukikim / Sample.tsx
Last active November 10, 2024 23:55
[tsx]子コンポーネントから親コンポーネントへ
//### 親コンポーネント
import React, { useState } from 'react';
import ChildComponent from './ChildComponent';
const ParentComponent: React.FC = () => {
const [data, setData] = useState<string>('');
const handleDataFromChild = (childData: string) => {
@yukikim
yukikim / map.tsx
Last active November 10, 2024 19:29
[tsx]配列を map でレンダリング
import React from 'react';
interface Item {
id: number;
name: string;
}
const MyComponent: React.FC = () => {
// 配列データを定義
const items: Item[] = [
@yukikim
yukikim / use_reduser.tsx
Created November 10, 2024 19:23
[tsx]useReducer を使ったより複雑な状態管理
import React, { useReducer } from 'react';
// それぞれのコンポーネント
const ComponentA: React.FC = () => <div>Component A</div>;
const ComponentB: React.FC = () => <div>Component B</div>;
const ComponentC: React.FC = () => <div>Component C</div>;
// reducer のアクション型
type Action = { type: 'showA' } | { type: 'showB' } | { type: 'showC' };
@yukikim
yukikim / state.tsx
Last active November 10, 2024 19:22
[tsx]useState を使った簡単な条件分岐
import React, { useState } from 'react';
// それぞれのコンポーネント
const ComponentA: React.FC = () => <div>Component A</div>;
const ComponentB: React.FC = () => <div>Component B</div>;
const ComponentC: React.FC = () => <div>Component C</div>;
const MyComponent: React.FC = () => {
// ステートを定義
const [currentComponent, setCurrentComponent] = useState<string>('A');
@yukikim
yukikim / sample.tsx
Created November 10, 2024 18:39
[tsx]sample_useReducer
import { useReducer } from 'react'
// reducerが受け取るactionの型を定義します
type Action = 'DECREMENT' | 'INCREMENT' | 'DOUBLE' | 'RESET'
// 現在の状態とactionにもとづいて次の状態を返します
const reducer = (currentCount: number, action: Action) => {
switch (action) {
case 'INCREMENT':
return currentCount + 1