1. 余談ですが.fm
  2. 160. 朝活「続続・Solid.js」..
2022-06-11 29:56

160. 朝活「続続・Solid.js」にダラダラ入門する話

spotify apple_podcasts
はい。今回も引き続き JavaScript ライブラリの1つ

Solid.js
https://www.solidjs.com/docs/latest/api#secondary-primitives

の「ストア」「Component APIs」のセクションを読んでいきました💁‍♂️

今回もなんやかんやコードばかりで、ちょっと難しかったですが、Solid.js のコアコンセプトはブレていないなぁという印象を受けました。

結局はサードパーティ製のライブラリに依存する可能性も高い気もしますが、まだこの辺は書いてみない事には何も言えないですね(それはそうw)

ではでは(=゚ω゚)ノ


#朝活 #勉強 #入門 #OSS #JavaScript #SolidJS
---
stand.fmでは、この放送にいいね・コメント・レター送信ができます。
https://stand.fm/channels/5e70dd5881d4e84e1ff1cab4
00:06
6月10日、金曜日。 時刻は朝9時を回りました。
今日の東京はいい感じの天気ですね。 皆さんはいつかいかがお過ごしでしょうか。
おはようございます。株式会社めみのキースことくわはるです。
では本日も朝活を始めていきたいと思います。
今回もタイトルにある通り、ソリッドJSですね。
Javascriptライブラリにダラダラと入門していこうかなと思ってます。
前回、昨日はリアクティブのユーティリティを読んでたんですけど、
ちょっと難しかったというか、イメージづらかった感じですね。
他のベーシックなリアクティブ機能の4つありましたけど、
あれにも中にも使われたりするようなものなので、
本当に実際に使っていく中で使われるようなものだと思います。
ユーティリティ、そういうのもあるだなというリファレンス的に見るだけでいいと思います。
昨日はその代わりなので、イメージづらかったと思って大変申し訳なかったですね。
今日はタイトルにある通り、ストアに入っていこうかなと思ってます。
じゃあ入ってみますね。
これらのAPIはソリッドJSスラッシュストアという名前で、
すでにNPMにも公開されてます。
これによってシグナルのツリーを個別に追跡または変更できる
プロキシオブジェクトであるストアを作ることができますよと言ってます。
まずプロキシオブジェクトというのは一般的なプロキシオブジェクトですね。
公式サイト的にはMDNにリンクが貼ってます。
じゃあ実際にそのまずストアを使っていきましょうということで、
使い方としてはユーズステイトと結構似てますね。
まずクリエイトストアというのを作る感じですね。
違う、ユーズステイトではなくてリダックスみたいな、
そういうストアライブラリと結構似てますね。
まずインスタンスを作るためにクリエイトストアというのを
コールすることになるらしいです。
引数としてはTもしくはエクステンズストアノードと書いてますので
ストアノードという型定義はここにどういう風に書いてあるかわからないですけど
基本的に受け取ったものをそのままストアとして初期値に設定できそうですね。
このクリエイト関数というのは初期状態を受け取って
それをストアでラップして読み取り専用のプロキシオブジェクトと
セッター関数を返しますと言ってます。
ソースコード的にもインポート、クリエイトストアで
この名前でちゃんと受け取ってますね。
ソリッドJスラッシュストアでインポートして
続いてコンスト仮括弧のステイト、セットステイト
というのでいわゆるゲッターとセッターを受け取る感じですね。
厳密に言うと先ほど言った通り
読み取り専用のプロキシオブジェクトが第一レスポンスですね
ステイトで受け取って
あとはセッターとして第二レスポンスですね
セットステイトを受け取ってます。
イコールクリエイトストアでイニシャルバリューみたいなので渡しますと。
値の読み取りの仕方は
先ほどのレスポンスの中にあった第一レスポンスですね
ステイトというのを今回は使ってますけど
03:01
ステイト.サムバリューみたいな感じで値を読み取ります。
こっちはゲッターではないので
単純に.バリューとかで漢字で値を読みに行くことができる
シンプルなオブジェクトですね。
値の設定の方ですね
設定の方はもちろんセッターとしてのセットステイトを使ってくださいと
いうところですね
引数にはオブジェクトでもいいですし
適当な値を入れてくださいと
もしくはセットステイトのところの値は
複数個カンマ区切りでバンバンと入れても
同じように設定されるっぽいですね
プロキシとしてのストアオブジェクトというのは
プロパティがアクセスされたときのみに追跡をします
実行するときに初めて追跡をしに行くんですね
常に検知しているというわけではなさそうです
これはある意味でいいことかもしれないですね
マシンのメモリとかを使わなくて済むって感じがありますね
そんなところです
元気さんですね。おはようございます
タイトルにあるとおり
JavaScriptライブラリソリッドJSに今入門していて
今回はストアの話を今読んでました
今本当に入ったばっかりですけど
使い方としてまずCreateStoreというメソッドをコールして
レスポンスにUseStateみたいに
StateとSetStateというので
2つでレスポンスを受け取るみたいなところをやってました
第1レスポンスは読み取り専用のプロキシオブジェクトで
第2レスポンスはSetStateというセッター関数が変えるよという感じですね
今までのソリッドJSで見てきた
例えばCreateSignalとかCreateEffectみたいなものだと
レスポンスはセッターとゲッターが返ってくるんですね
ゲッターの方は関数になるので
ちゃんと実行しなきゃいけないんですけど
今回のレスポンスのゲッターはゲッターではなくて
厳密に言うとプロキシオブジェクトなので
単純に値を読み取りにいけるよというのが違いがありますね
しちゅうゆうせんさんとこっちのさんですね
ご参加いただきありがとうございます
タイトルにあるものをダラダラと読んでます
じゃあちょっと続けていきますね
何だっけ
ストアのCreateStoreの実行結果のところ読んでました
続きいきます
ネットしたオブジェクトがアクセスされると
ストアはネットしたストアオブジェクトを生成して
これはツリーの下まで適用されますよと
ただしこれは配列とプレーンオブジェクトののみに適用されます
クラスっていうのはラップされないので
例えばDateとかHTMLエレメントとか
RegExpoとかMapSetといったオブジェクトは
ストアのプロパティとして
キメコもかくは反応しませんと
一応取れますけど雑になるよっていう感じがあるので
なるべくは配列とかプレーンオブジェクトっていうのが良さそうですね
トップレベルの状態オブジェクトは追跡はできないので
状態オブジェクト自体を使用するのではなくて
状態のキーにリストを置くようにしてくださいと
例えばCreateStoreでインスタンスを作るときの引数ですね
06:02
初期値の引数としては
オブジェクトで今回そのサンプルコードでは
リストっていうキーを付けていて
リストコロンから配列みたいな感じで
渡してあげているっていうのがあります
そうすることで値のアクセスの方は
レスポンスの方のオブジェクトから
単純にドットでアクセスできますね
なので今回の例だと
State.listみたいな感じで
アクセスすることができるよっていうところでした
なので単純にオブジェクト渡すというか
ちゃんとキーをセットにした値を渡してあげるのが良さそうですね
プリミティブな値で渡してしまうと
アクセスの仕方がちょっと難しそうな気がしますね
というところでした
今のがストアの仕様ですね
CreateStoreでした
続いてGetterのところですね
ストアオブジェクトっていうのは
計算した値を格納するためのGetterをサポートしています
さっきのCreateStoreで実行した
レスポンスのStateっていうところですね
これもオブジェクトなんですけど
これではなくてそのリターンのところにも
ちゃんとGetterっていうのを明示的に付けることができそうですね
もうちょっとソースコードなので
また音読になって申し訳ないんですけど
さっきと同じように
CreateStoreでまずインスタンスを作りますと
初期値のところにオブジェクト渡すんですけど
今回の例はuserというキーでオブジェクト渡してあります
その中身はJSONになっていて
FirstNameっていうので文字列渡して
LastNameで文字列渡して
もう一個ですね
そのさらに下に
GetSpaceFullNameみたいなので
Getter関数っていうのを定義しますね
FullNameっていうのは先ほどのFirstNameとLastNameを
単純にくっつけただけの関数ですけど
こういうGetter関数もレスポンスの中に渡してあげて
CreateStoreのインスタンスを作ると
こういうこともできるってことですね
これは単純なGetterになるので
値をキャッシュしたいとかという場合は
メモっていうのを使う方がいいと思います
メモっていうのはこのSolid.jsにもともと備わっている
CreateMemoっていう関数がありますね
これUseMemoに結構似てるやつですね
というわけでこれを使うといいでしょうと言ってました
続いてストアの更新です
ストアの更新はですね
変更っていうのは以前の状態を渡して
新しい状態または値を返す関数の形を取ることができます
オブジェクトは常に浅くマージされます
ストアから値を削除するには
値をUndefinedに設定をします
なんかデリート的なのがあるわけではなくて
Undefinedを渡してあげるっていうんですね
ちょっとここは個人的に使いづらいなっていう感じはあります
またサンプルソースコードになりますけども
同じようにCreateStoreっていうのを使って
初期値にはオブジェクトで
ファーストネームに文字列
ラストネームに文字列を渡してあげてます
受け取ってレスポンスとしては
09:00
StateとSetStateっていうのを配列で受け取ってますね
ストアの更新なのでSetStateの呼び方ですけど
SetStateのところは
シンプルにさっきと同じようなオブジェクトで
ファーストネームとあとミドルネームですか
なんか別のものをつけて
今回はSetStateをコールしてみましょう
でするとさっきにはファーストネームとラストネームが初期値だったんですけど
新しくミドルネームっていうのもマージされて
オブジェクトが生成されますよってことでした
もう一個の使い方としては
単にオブジェクトをSetStateに渡すんではなくて
コールバック関数ですね
関数を渡してあげると
でするとその中の関数の引数っていうのは
現在の状態ですね
現在、厳密に言うとPreviousなんですけど
その状態を受け取って
中の関数の方でそれをガチャガチャやれば
一応マージはされますよっていう感じの
使い方になってますね
注意すべきはやっぱり
浅いマージってところですね
オブジェクトのレストがどんどん深くなっていくと
そこまではマージされなさそうですね
もうちょっとコメントが続きます
キーハイレスとかオブジェクトの範囲および
フィルター関数を含むパースをサポートしていて
セットステイトっていうのは
変更へのパスを示すことができる
ネストされた設定もサポートしています
ネストされている場合更新される状態というのは
オブジェクト以外の他の値である可能性があります
オブジェクトは引き続きマージされますけど
その他の値と
ハイレスを含むものは置き換えられてしまいますよ
と言ってますね
言ってることは何かというと
こういう使い方もできるのか
先ほどと似たような感じですね
ひたすらソースコードが出てくるんですけど
同じようにクリエイトストアでインスタンスを作ります
初期値にはオブジェクトが渡されていて
今回はカウンターってものですね
これは数字が渡してます
次にリストっていうものを渡してあげて
こっちはハイレスですね
ハイレスの中はオブジェクトハイレスになってますね
っていうのを初期値として渡してあげてるという感じですね
受け取りはステートとセットステートという感じです
今回はセットステートのところに明示的に
第一引数この値を更新しますよっていう
キー名を渡すことができるという例になってますね
一つ目はなんだっけ
さっき初期値にあったカウンターってやつですね
数字のナンバリングのやつですけど
カウンターっていうのを第一引数に文字列で指定してあげて
二つ目にそのカウンターの実際の値ですね
ここもコールバック関数を渡すことができて
例えばCとかで受け取って
レスポンスにCプラス1みたいな関数を定義していくことができると
そうすると現在の値にプラス1した値を
セットすることができるみたいな風に使えるんですね
12:01
ここ結構柔軟でいいと思いました
同じようにさっき見せたリストっていうものですね
初期値にリストっていうオブジェクトハイレスを渡してあげたんですけど
ここもやっぱりリストっていうのを第一引数にしてあげると
第二引数で単純に値でもいいですし
またさっきと同じようにコールバック関数で渡してあげてもいいと
いう風に使うことができると
これは結構便利でいいなと思いました
ただ基本的にはハイレスも含む基本その他の値っていうのは
置き換えられてしまうってところに注意をした方がいいですね
なので基本ちゃんと管理したければ
オブジェクトで渡す方がいいのかなっていう感じはしました
この辺はちょっとまだまだ使ってみないとわからないですけどね
続いてパスと言ってるワードがちょいちょい出てるけど
パスというものが一回も出てきてないんだが
ここは一旦土返しで良さそうですね
文字列のキーとかキーのハイレスとか反復オブジェクト
fromとかto,byみたいな反復オブジェクト
またはフィルター関数っていうのが渡すことができるものです
これによって状態の変化を表す表現力が飛躍的に向上しますよということですね
結構いろんなものを渡すことができるんですね
マップとかも使えたりするってのはすごいな
結局フロムto,byかっていうのが使えるのは大きいですね
なのでどこの値をどうしたい
そして何を媒介にするかっていうのを細かく指定できるっていう感じです
これは残念ながらちょっとここまで来ると
ソースコードを音読で伝えるのはかなりしんどいものがあるので
ごめんなさいここはちょっと読んでもらった方がいいと思います
実際のソースコードを見ていただければと思います
では続いてストアのユーティリティですね
またユーティリティは結構理解っていうか
音読だとどこまで伝わるかわからないですけど一応読んでいきます
ユーティリティ4つありますね
ストアのための関数が4つあって
プロデュース、リコンシールとアンラップとクリエイトミュータブルですね
っていうのが1つあります
1つ目プロデュースですが
プロデュースっていうのは今にインスパイアされた
ソリッドのストアオブジェクト用のAPIで
局種的なミューテーションを可能にすることができますよと
使い方としては
クリエイトストアでインスタンスを作ったセッター関数ですね
ここにプロデュースっていう関数をセットしてあげる形になりますね
そこの引数の中でストアの値が受け取れて
そこで選んだ値だけを更新するようにできそうですね
これを使うことはそんななさそうですけどね
シンプルにセットステートで
先ほどの言ったように
キーの値を指定してあげて
ガチャっと更新すればいいと思うんですけど
多分第1引数に渡されるキーが単純に文字列なので
15:03
いわゆる更新したいステートが
1個しかセットステートで選べない
これを複数個まとめて指定してあげたいときに
このプロデュースを使うと良さそうですね
いわゆるセレクター的な感じの使い方ができると思います
次ですね
リコンシールってやつですけど
こちらは決め細かい更新を適用できない場合に
データの変化を差分で表示することができます
ストアからのイミュータブルなデータや
大きなAPIレスポンスを扱う場合に便利です
でけえAPIレスポンス扱う場合便利なのかな
もうちょっと読みますね
アイテムをマッチさせるためにキーがあればそれを使います
デフォルトでは
マージフォルスは可能な限り参照チェックを行って
同等性を判断して
アイテムが参照的に等しくない場合には
遅刊をしてしまいますよと
マージトゥルーっていうのは
全ての差分をノードにプッシュして
以前のデータを新しい値に変換してしまいますよと言ってますね
これはちょっとコンテキストが高い日本語だな
なおかつ今日だけの内容ではちょっと難しそうです
というのも今まで見てきた
サブスクライブの機能の話がちょっと出てきたり
クリーンアップの関数を使ったりしてたりするので
ここの機能の話を理解している方は
このソースコードの話がふーんってなると思うので
ごめんなさいこちらもちょっと割愛しますね
サンプルコードは
というところですね
やっていることはストアのサブスクライブという機能が
今回実装されていて
オブザーバブルの要は
公読ができるということを言ってますね
その中で大きい値をガンと
まとめてガンとやりたいときには
このキーを指定してあげて
リコンシールという関数で
レスポンスの値をラップしてあげて
やると良さそうみたいなところですね
これで可能な限り同等性というのを
判断したりしてくれるということですね
要は便利なものという感じです
続いてUTAT Unwrapですね
ストアの元となるデータをプロキシなしで返します
はっはっは
ラップをしないシンプルな値ということですね
タイプスクリプトの仮定義的にも
引数はストアのTになっているので
本当に単にストアの元となるデータだけですね
シンプルなデータをオブジェクトだと思います
ラストはCreate Mutableですけども
Mutableなストアプロキシオブジェクトを
新規に作ることができます
ストアというのは値が変化したときのみに
更新をトリガーします
追跡はプロパティアクセスを
インターセプトすることで行われて
18:00
プロキシ経由で深いネストを
自動的に追跡してくれますと
ちゃんとあるんじゃ
外部システムとの統合や
MobXとかViewみたいなものですね
互換性レイヤーとしても結構有効でありますよ
MobXとかViewの互換性レイヤーで使えるの
これ結構強いな
注意としてはMutableな状態は
どこにでも渡したり変更が可能になるので
追跡が困難になったり
単方向フローを壊しやすくなったりします
一般的には代わりにCreate Storeを
ストアを使うことをお勧めします
プロデュース就職地とかを使用すると
同じメリットがありますけど
デメリットがないよということですね
なるほどです
基本的にはCreate Storeを使うことが
良さそうですけど
どうしてもMutableで
ピンポイントで使いたいときは
ちゃんとインターセプトを行って
深いネストを自動的に追跡して
値を更新してくださいという感じですね
使い方はCreate Storeと同じ感じで
Create Mutableという関数をコールして
第1引数にイニシャルバリューを
足してくださいという感じですね
Create Storeとの大きな違いは
レスポンスの値は
全部オブジェクトになっていますね
だからセッターとかがあるわけではなく
単純にオブジェクトだけボーンと
返ってくる感じですね
値の読み取りとしては
レスポンスオブジェクトに
ドットバリューみたいな感じで
単純に見に行くことができます
設定もドットバリューに
イコールホゲホゲみたいな値を
指定してあげれば
単純に値も上書きできますよ
ということですね
なんかとてもシンプルですけど
確かにCreate Storeで
ちゃんとセッターと
オブジェクトという値で受け取る方が
個人的にもなんか良さそうですね
やっぱその単方向フロー
壊しやすくなったりするってのは
やっぱデメリット大きいので
よっぽどのことない限り
基本的にはCreate Storeを使って
ストア管理するのが良さそうです
ミュータブルっていうのは
ゲッターではなくて
セッターも一応サポートしています
今はゲッターしか見れてなかったんですけど
セッターもサポートしていて
それの使い方とか定義の仕方としては
ここは結構Create Storeと似てるんですけど
ちょっとソースコードになりますね
同じようにCreate Mutableって
関数を実行します
初期値ですね
引数に初期値を渡すんですけど
ここにオブジェクトを足してあげて
この中でGetスペース
ゲッター関数の名前定義をしてあげるとか
あとSetスペースでセッター関数の名前とかを
指定してあげるという感じにすれば
一応Create Mutableでも
ゲッターセッターっていうのを
定義することはできますよと言ってました
逆に言うとこれを指定しなかったら
ミュータブルって
単純なストアオブジェクトになりそうですね
という感じです
でも割とシンプルで
21:02
僕は嫌いじゃないかな
そんな感じでしたね
ただミュータブル使うぐらいだったら
今のところはCreate Storeで
何もデメリットなさそうだし
十分機能するようなイメージがありますね
というところでした
22分
もう中途半端な時間ですけど
今まで一応ストアのショーが終了してしまったので
残り
もうちょっと読んでいこうかな
残りはコンポーネントAPIに
次は入っていきたいと思います
こっちも1,2,3,4,5
5個ありますので
いけるところまで行こうかなと思います
一つ目ですけど
Create Contextですね
これはUse Contextと結構似てるものだと思うんですけど
ちょっと読んでいきます
コンテキストは
ソリッドでの依存性注入の方式を提供してくれます
これは中間コンポーネントを介して
データをプロップスして
渡す必要がないようにするために使用されます
いわゆるバケツ入れしなくていいようにするためですね
この関数はUse Contextで使用できる
新しいコンテキストオブジェクトを作って
プロバイダー制御フローを提供します
すげーリアクト感ある
階層構造の上位に
プロバイダーが見つからない場合には
デフォルトのコンテキストが使用されます
そんなのあるんですね
使い方としては
ほんとUse Contextと見た目一緒ですね
まじで一緒
Create Contextっていう関数を実行して
初期値渡してあげて
レスポンスに例えば
今回の場合だと
Counter Contextっていうので受け取ると
実際に関数コンポーネントを定義しておいて
そのリターンのJSXの中で
さっきのCounter Context.Providerみたいなのを
HTMLタグで置いてあげて
バリューにストアの値を指定してあげれば
下の方でもストアの値も
ちゃんと渡せますよっていうので
もうすごくUse Context感です
なんだけど厳密には違うよって言ってますね
Providerに渡された値というのは
そのままUse Contextに渡されます
紛らわしいんですけど
Solid.jsには
Create ContextとUse Contextっていうのは
別の機能として
APIとして定義されてるので
ちゃんとReactのUse Contextと
SolidのUse Contextって
僕ちょっと使い分けたほうがいいですね
戻してもう一回読むと
Providerに渡された値っていうのは
そのままSolidのUse Contextに渡されます
つまりこれは
Reactiveな式としてのラッピングは
機能していませんということですね
Signalやストアというのは
JSXでアクセスするのではなく
直接渡すべきだよっていう思想だそうですね
なるほどですね
今のがCreate Contextですね
続いてUse Contextの説明ですね
Use Contextは
Contextを取得して
各コンポーネント関数を通過させることなく
プロップスを深く渡すことができるように
そういうために使用されます
先ほどのCreate Contextで
24:00
Provider指定してあげて
値をValueイコールストア
というふうに渡したとしましょう
その時各コンポーネントのほうですね
ではUse Contextで
そのコンテキストの名を指定してあげて
レスポンスにStateと
セッターみたいなものを
受け取ることができますよ
っていう感じですね
ここもUse Contextを
実際に使うほうですね
コンポーネントで
受け取るほうのUse Contextの使い方
リアクトのUse Contextと結構似てますね
って感じでした
続いてチルドレンですね
チルドレンAPIというのも
ちゃんと明示的になっていて
こちらはですね
プロップス.チルドレンとのやりとりを
容易にするために使用します
このヘルパーっていうのは
ネストされたReactivityを解決して
メモを返してくれる
じゃあキャッシュするのかな
JSXに直接渡す以外の方法で
プロップス.チルドレンを使用する際に
推奨されるアプローチでございますよ
ということですね
基本的にはプロップス.チルドレンで
僕らは値を受け取って
使っていくということになるんですけど
明示的にチルドレンという関数を使って
渡すこともできると
使い方としてはチルドレンという関数なので
これを括弧で実行しますけど
その引数にコールバック関数が指定されてますね
その中でプロップス.チルドレンというのが
受け取れるらしいので
それを変数で受け取って
それを使って何かやってくださいね
ということでした
プロップスのメモ化のために
使うような印象を受けましたけど
他は特にないかな
でもReactivityというのを結構解決してくれるので
ここが大きいんだと思いますね
ソリッドJSの強みであるReactivityというのを
ちゃんとプロップスで
レストされた下の構想まで
ちゃんと使えるようになるというのが
メリットっぽいので
デカいコンポーネントとか
深いコンポーネントが使うときは
こっちを使うかもしれないですね
シンプルに値だけ渡したいときは
シンプルなプロップスで
ここら辺は土返しでもいい気がしましたね
続いてLazyですね
名前の通りLazyなんで
その辺だと思います
遅延の話だと思いますが
コードの分割を可能にするため
コンポーネントを遅延ロードするのに使用されます
コンポーネントはレンダリングされるまで
ロードしません
遅延ロードされたコンポーネントというのは
静的にインポートされたものと同じように
プロップスなどを受け取ってもちろん使用できます
遅延コンポーネントというのは
一応サスペンスというコンポーネントを
トリガーしますよと言ってました
なるほどですね
これもソースコードを見ていただくと
多分分かると思いますけど
よくやるインポートで
コンポーネント名を指定してあげるけど
それをちゃんとレイジー関数にかけてあげて
引数は
コールバック関数ですね
コールバック関数のレスポンスで
ダイナミックインポートしているような感じです
それを受け取ったら
27:01
今やったコンポーネントが
ラップされてくるんですよね
あとはそれを
JSXで使ってくださればいいですよ
という感じですね
というのを遅延して使うことができる感じでした
ただどこまで遅延を細かく制御できるかというと
このサンプルコードはちょっと分かりづらいというか
あまりにもシンプルすぎるので
あれですけどね
ここは今後の
追加機能開発でちょっと
期待したいというところはありますね
なのであんまりうまいこと制御できなかったり
その遅延のタイミングとかがあまり
こちらでコントローラブルにできないのであれば
従来のレイジーの使い方の方が
いいかもしれないですね
ここは今後に期待しましょう
ラストですね
Create unique IDというのがあります
これは名前の通りですね
サーバーとかブラウザーまたがって
変動のない
汎用的なIDジェネレーターですよということでしたね
一応注意として
サーバー上ではハイドレート可能な
コンポーネントでのみ動作をするので
そこだけ気をつけてくださいと
クライアントは別に単純に使ってくださっても問題ない
クリエイトユニークIDというのを
別引きツールなしで関数実行すれば
IDが生成されますと
いう感じですね
ただ本当にユニークなのかというのは
僕はこの言葉だけで結構怪異的なので
クリエイトユニークIDが
中どういうロジックで
ユニークIDを作っているのかというのを
見てから使ったほうがいいんじゃないかなと
思いました
じゃなければ基本的にそういう
ユニークIDを作ってくれる
ライブラリとかモジュールがたくさんあるので
そっちのほうを僕は使うかもしれないですね
一旦このソースコードを
後ほど見てから決めようかなと思います
はい
というところですね
今のでコンポーネントAPIの
お話まで終了しました
では今ので
ちょうど30分になりましたので
今日の朝方は以上にしたいかなと思います
明日ですね
副次的な
プリミティブとレンダリング
までいけたらいいかな
と思ってます
このところですね
最後に特別なJSXの
属性とあるんですけど
ここ入るかどうか軽く眺めてから
決めようと思います
もし読んで学びになるなと言ったら読みたいと思いますけど
ここは本当に書かなきゃ
わかんないなという話だったら
割愛しようかなと思いますので
また次回明日も
ソリッドJSの入門にだらだらやっていこうかな
と思いますので
興味ある方はご参加いただければ嬉しいと思いますし
やっぱりソースコードがたくさん出てきたので
この辺はドキュメント見てもらうほうが
わかりやすいと思いますので
興味ある方は触ってみて
いただければなと思います
今日の朝がこちらで以上にしたいと思います
ご参加いただいた皆さん
本当にありがとうございました
金曜日ですね鼻筋
ゆるーくお仕事して楽しく
夜を過ごしたらいいんじゃないかなと思ってます
ではお疲れ様です
29:56

コメント

スクロール