動くコード図鑑技術記事現場の渡り方キャリア論すべての記事About

動くコード図鑑

$ ls -1 /library | wc -l → 619

触って動く、検証済みの正解集。

公開記事から抽出した全コードブロックを 1 つずつページ化。 ▶ ボタンで 実行ログを再生し、 さも今動いてるかのように出力を流す。

この図鑑の使い方

言語で絞る

C# / SQL / TypeScript / PowerShell / Bash でフィルタ。

▶ で実行

事前収録の出力を 1 行ずつ再生。 ぱっと結果が見える。

記事と接続

各 snippet は出典記事へのリンク付き。 文脈ごと読める。

絞り込み

snippet 一覧

39
TypeScript
import React, {FC} from 'react';

const Student : FC = () => {
    return (
        <div>

生徒コンポーネント

【React×Typescript】typeのPropsをジェネリックで定義して共通化する未収録#729f1587a369
TypeScript
import React, {FC} from 'react';

const Teacher : FC = () => {
    return (
        <div>

教師コンポーネント

【React×Typescript】typeのPropsをジェネリックで定義して共通化する未収録#1a5f1a093793
TypeScript
import React from 'react';
import logo from './logo.svg';
import './App.css';
import Student from "./Components/Student";
import Teacher from "./Components/Teacher";

実行結果

【React×Typescript】typeのPropsをジェネリックで定義して共通化する未収録#720620dbe2a8
TypeScript
type Props = {
    Name : string,
    Gakunen : number
}

生徒コンポーネント

【React×Typescript】typeのPropsをジェネリックで定義して共通化する未収録#0c757106cf6f
TypeScript
type Props = {
    Name : string,
    Kyouka : string
}

教師コンポーネント

【React×Typescript】typeのPropsをジェネリックで定義して共通化する未収録#3eab11d27cb9
TypeScript
import React, {FC} from 'react';

type Props = {
    Name : string,
    Gakunen : number

それぞれのコンポーネントで受け取れるようにする

【React×Typescript】typeのPropsをジェネリックで定義して共通化する未収録#2ef1d9381b68
TypeScript
    <div className="App">
      <Student Name={"鈴木"} Gakunen={3}/>
      <Teacher/>

それぞれのコンポーネントで受け取れるようにする

【React×Typescript】typeのPropsをジェネリックで定義して共通化する未収録#f8304cbaf936
TypeScript
const Teacher : FC<Props> = (props) => {
    return (
        <div>
            <h2>先生コンポーネント</h2>
            <p>名前:{props.Name}</p>

それぞれのコンポーネントで受け取れるようにする

【React×Typescript】typeのPropsをジェネリックで定義して共通化する未収録#b2e78cd737b7
TypeScript
export type StudentType = {
    Name : string,
    Gakunen : number
}

生徒と教師Propsを型付けする

【React×Typescript】typeのPropsをジェネリックで定義して共通化する未収録#7491e5b77046
TypeScript
type Props = {
    Data : TeacherType
}

const Teacher : FC<Props> = (props) => {

生徒と教師Propsを型付けする

【React×Typescript】typeのPropsをジェネリックで定義して共通化する未収録#42c142288729
TypeScript
type Props = {
    Data : StudentType
}

const Student : FC<Props> = (props) => {

生徒と教師Propsを型付けする

【React×Typescript】typeのPropsをジェネリックで定義して共通化する未収録#d78f4ec7e6cb
TypeScript
    <div className="App">
      <Student Data={{Name : "鈴木",Gakunen : 3}}/>
      <Teacher Data={{Name : "田中",Kyouka : "数学"}}/>

生徒と教師Propsを型付けする

【React×Typescript】typeのPropsをジェネリックで定義して共通化する未収録#37e3162bd3c1
TypeScript
export type CommonProps<T> = {
    Data : T
}

型をジェネリックで定義する

【React×Typescript】typeのPropsをジェネリックで定義して共通化する未収録#fc13b3d84744
TypeScript
const IncrementAction = 'inc' as const;
export const Increment = () => ({type : IncrementAction});

const DecrementAction = 'dec' as const;
export const Decrement = () => ({type : DecrementAction});

counterReducerを作る

React×TypescriptでuseContext使ってReduxライクなState管理をしてみる未収録#95f4059e973a
TypeScript
import React,{createContext, FC, useReducer} from "react";
import {CounterActions, CounterInitialState, CounterReducer} from "./CounterReducer";

type CounterContextState = {
    count : number,

createContextでContextとProviderを作る

React×TypescriptでuseContext使ってReduxライクなState管理をしてみる未収録#299994aedd3b
TypeScript
type CounterContextState = {
    count : number,
    dispatch : React.Dispatch<CounterActions>
}

createContextでContextとProviderを作る

React×TypescriptでuseContext使ってReduxライクなState管理をしてみる未収録#bcf866e4af9f
TypeScript
export const CounterContextProvider : FC = ({children}) => {
    const [state,dispatch] = useReducer<typeof CounterReducer>(CounterReducer,CounterInitialState);
    return(
        <CounterContext.Provider value={{
            count : state.count,

createContextでContextとProviderを作る

React×TypescriptでuseContext使ってReduxライクなState管理をしてみる未収録#c5010fb65476
TypeScript
import React, {FC, useContext} from 'react';
import logo from './logo.svg';
import './App.css';
import {CounterContext, CounterContextProvider} from "./Contexts/CounterProvider";
import {Decrement, Increment, IncrementAction} from "./Reducers/CounterReducer";

実際useContextで上記で作ったものを使ってみる。

React×TypescriptでuseContext使ってReduxライクなState管理をしてみる未収録#eeb0f49121db
TypeScript
const HogeComponent = () => {
  const AComponents = useMemo((): React.ReactNode[] => {
    return ['a', 'b', 'c'].map(v => <p>{v}</p>);
  }, [])

const HogeComponent = () => {

Reactで違うコンポーネントをmapでレンダリングする方法未収録#0f591a276206
TypeScript
import {Action} from 'redux'

export enum	ActionNames{
	Increment = 'inc',
	Decrement = 'dec'

Action

Typescript×ReduxでStateがundefinedに?確認すること!未収録#f6e047b97c21
TypeScript
import {ActionNames, ActionType} from "../Actions/CounterAction";


export interface IState {
	num : number

Reducer

Typescript×ReduxでStateがundefinedに?確認すること!未収録#c6a3f4c3b4fc
TypeScript
import {combineReducers,createStore,Action} from 'redux'
import CounterReducer, {IState} from "../Reducers/CounterReducer";
import {ActionType} from "../Actions/CounterAction";

const rootReducer = combineReducers(

Store

Typescript×ReduxでStateがundefinedに?確認すること!未収録#3016f3544502
TypeScript
import {ReduxAction, ReduxState} from "../Store/store";
import {DecrementAmount, IncrementAmount} from "../Actions/CounterAction";
import {connect} from "react-redux";
import {Dispatch} from "react";
import Counter from "./Counter";

Container

Typescript×ReduxでStateがundefinedに?確認すること!未収録#adc8bd5d5619
TypeScript
import React from "react";
import {IState} from "../Reducers/CounterReducer";
import {ActionDispather} from "./Container";

interface Props {

Component

Typescript×ReduxでStateがundefinedに?確認すること!未収録#cef49ac152ba
TypeScript
import React from 'react';
import ReactDOM from 'react-dom';
import * as serviceWorker from './serviceWorker';
import {Provider} from "react-redux";
import store from "./Store/store";

Index

Typescript×ReduxでStateがundefinedに?確認すること!未収録#137a571c0501
TypeScript
	render() {
		return (
			<div>
				{/*<p>CurrentCount:{this.props.value.num}</p>*/}
				{console.log(this.props)}
▶ 実行可

Reduxでstateが undefinedに?どんな現象?

Typescript×ReduxでStateがundefinedに?確認すること!#724b87f56936
TypeScript
	render() {
		return (
			<div>
				{/*<p>CurrentCount:{this.props.value.num}</p>*/}
				{/*{console.log(this.props)}*/}
▶ 実行可

ContainerのMapstateの部分でどのような値が来てるか見てみる。

Typescript×ReduxでStateがundefinedに?確認すること!#ddd9708df976
TypeScript
export default connect(
	(state : ReduxState) => {
		console.log(state);
		return {value : state.Counter}
},
▶ 実行可

ContainerのMapstateの部分でどのような値が来てるか見てみる。

Typescript×ReduxでStateがundefinedに?確認すること!#f35cb2945ba1
TypeScript
export type ReduxState = {
	Counter : IState
};

ContainerのMapstateの部分でどのような値が来てるか見てみる。

Typescript×ReduxでStateがundefinedに?確認すること!未収録#815cfae7aafa
TypeScript
export type ReduxState = {
	CounterReducer : IState
};

ContainerのMapstateの部分でどのような値が来てるか見てみる。

Typescript×ReduxでStateがundefinedに?確認すること!未収録#6136a1a5f9f4