日頃の学習の成果や困ったこと、
新発見などを投稿します。
コードブロックテスト2021-09-01
Next.js
import { useState } from 'react';

const App = () => {
  const [count, setCount] = useState(0);

  const increment = () => setCount(count + 1);
  const incrementDouble = () => {
    increment();
    increment();
  };
  const decrement = () => setCount(count - 1);

  const increment2 = () => setCount((prevCount) => prevCount + 1);
  const increment2Double = () => {
    increment2();
    increment2();
  };
  const decrement2 = () => setCount((prevCount) => prevCount - 1);

  const reset = () => setCount(0);
  const double = () => setCount(count * 2);
  const divideThree = () =>
    setCount((prevCount) => (prevCount % 3 === 0 ? prevCount / 3 : prevCount));

  return (
    <>
      <div className='App'>count: {count}</div>
      <br />
      <div>
        <span>通常の関数型</span>
        <button onClick={increment}>+1</button>
        <button onClick={incrementDouble}>+2にしたい</button>
        <button onClick={decrement}>-1</button>
      </div>
      <br />
      <div>
        <span>引数として元の値を受け取る型</span>
        <button onClick={increment2}>+1</button>
        <button onClick={increment2Double}>+2</button>
        <button onClick={decrement2}>-1</button>
      </div>
      <br />
      <button onClick={reset}>Reset</button>
      <button onClick={double}>*2</button>
      <button onClick={divideThree}>3の倍数の時だけ3でわる</button>
    </>
  );
}

export default App;
コードブロックUI改善 シンタックスハイライト化2021-09-01
Next.js

埋め込まれたコードブロックがはみ出ていたので改善

原因

  • 変換時に<pre>タグに変換されることが判明。スタイリングが当てられてない。

対策

  • global.cssにpreタグにoverflow-autoを追加。ついでに背景を黒に。


シンタックスハイライト化

参考記事

https://qiita.com/cawauchi/items/ff6489b17800c5676908

ほぼコピー。
constとかが色つかないのはなぜ?

TypeScript化完了 UI改善2021-09-01
Next.js
TailwindCSS

tsxに変更完了

  • あまり使ってこなかったオブジェクト型が結構出てくる。
  • 一か所だけanyを使ってしまった。client.getの部分の理解ができてない。


TailwindCSS

カラーを追加したいときは

const colors = require('tailwindcss/colors');

module.exports = {
  mode: 'jit',
  purge: ['./pages/**/*.{js,ts,jsx,tsx}', './components/**/*.{js,ts,jsx,tsx}'],
  darkMode: false, // or 'media' or 'class'
  theme: {
    extend: {
      colors: {
        // // Build your palette here
        transparent: 'transparent',
        current: 'currentColor',
        teal: colors.teal,
      },
    },
  },
  variants: {
    extend: {},
  },
  plugins: [],
};


このように記述することで用意されているカラーを追加できる。
もちろんオリジナルも追加可能。

以前作成したものを参考にUI改善2021-08-31
日記

tailwindでスタイリング

  • 以前作成したものを流用。小改善


Layout改善

  • componentsフォルダにLayoutコンポーネントを作成してスタイリングホーム画面の場合propsでhomeを渡して、レイアウトがちょっと変わる。公式でそう書いてた意味が自分で描いてみてしっかり理解できた!そういう書き方があるんだなぁ。
  • microCMSで標準で搭載されている時間表示publishedAtの表示が日本時間ではなかったので、日本時間になるように修正。こちらmicroCMSの公式を参照。dayjsで変換するなど少し手間がかかる。
indexをtsxに変換2021-08-31
Next.js

tsconfigのstrictをtrueへ

  • 型チェックが厳しくなるが、そもそもそうしないと意味がない。
  • unknown型はfalseでも弾かれるので良く分からなくなった。


index.jsをindex.tsxへ

  • GetStaticProps型(Nextの標準)
  • type PropsでHome画面に表示するためにわたってくるprops"blog"の型付け。今のところidとtitleがstringの配列型
  • getStaticProps内でmicroCMSにアクセスして取得するデータにも型付けが必要。これがunknown型になっていたが、オブジェクト型にして上で定義したPropsで型付けした。これでいいのかな?