ウェブフロント
- angular
- corewebvitals
- editorconfig
- gatsby
- hls
- html
- javascript
querySelectorAllで取得した要素は配列ではないらしい
JavaScript 配列内のオブジェクトの更新ってどうする?
デバッグ関数とかnullチェック関数をutil/index.tsにおいとけば楽なことに今頃気づいた。
ブラウザからジャイロセンサーを使ってみる
JS 画像のアップロード、プレビュー機能を実装
「数値から各桁の値を取り出す処理」って言われたら数学的な処理が一番に思い浮かぶけど、JSならそんなことなかった。
Callback時代の関数をPromise化する
個人的実装されてほしいECMA Script Proposal
JavaScriptのprototypeを使う
音声をなみなみさせる
AudioWorkletとAudioWorkletProcessorを使って音声のビジュアライゼーション
- next
- nuxt
- playwright
- prettier
- react
- reactnative
- tensorflowjs
- tools
- typescript
- wasm
- websocket
- ポエム
- 開発環境
サーバー
その他
コンポーネントを作るときに気をつけてる2つのこと
当たり前のことすぎて誰も教えてくれなかった。
コンポーネントを作るときに気をつけてる2つのこと
-
親コンポーネントからstyleを当てれるようにする
-
コンポーネント自体に
width, height
やmargin
を指定しない
1についてはpropsにclassNameを追加することで実装できます。
スタイリングにはtailwindcssを使っています。実装例を見てみましょう。
type Props = {
// classNameを受け取る
className?: string
}
const Component: React.FC<Props> = ({ className }) => {
return (
{/*配列にしてjoinで繋げることで親からのclassNameを適用*/}
<div className={['border rounded-2xl', className].join(' ')}>...</div>
)
}
2についてはそのままなのですが、コンポーネント自体に例えば
margin-top: 1rem
とつけたとき、もし他の場所では
margin-top: 2rem
にしたいってなると融通がききませんね。なのでmargin等の指定は親コンポーネントですることで呼び出し元から制御できます。
で、そのためには1が必要ってわけですね。
1で実装したComponentを呼び出す例を見てみましょう。
const Page = () => {
return (
<>
{/*親からclassNameを追加できる*/}
<Component className="mt-2" />
{/*widthも親から指定しましょう*/}
<Component className="w-1/2" />
</>
);
};
簡単なことですがこれら2つを気をつけるだけで、再利用可能なコンポーネントを作ることができます。
でわ。
[!NOTE] 親コンポーネントからstyleを当てれるようにする
[!NOTE] コンポーネント自体にwidth, height
やmargin
を指定しない
Thanks you for reading.