Q. Reactってなんですか?
A. ブラウザで動くウェブアプリを作るJavaScriptフレームワークです
Q. React使えば、iOSやAndroidアプリも作れるのですか?
A. 作れません。(ブラウザでなら動きます)
Q. でも動くってきいたんだけど?
A. それはReactではなくReact Nativeです。
Q. React と React Native は同じようなものじゃないの?
A. 設計思想が同じなだけで、中身は全くの別物です。
Q. React Nativeで作ればブラウザで動くの?
A. 動きません。(動くようにするサードパーティ製のライブラリならあります)
Q. React と React Native でソースコード共通化できるの?
A. UIの部分は共通化出来ません。UI以外の部分なら頑張れば
Q. このスレはどっちの話題のスレなの?
A. 両方です。どっちの話題をしているかは文脈で判断してください
探検
React と React Native のスレ
2019/03/09(土) 21:29:27.97ID:AJ6jPa0v
366デフォルトの名無しさん
2022/09/27(火) 16:48:43.98ID:CMfXpwKQ >>364
頭ごなしに否定する気はないんだけど
(jsの)クラスベースの記述するメリットってどういうとこがあるの?
配属されたプロジェクトのコードを初心者目線で見てクラスベースと関数ベースが混在して読みにくいな、って印象なのよ
頭ごなしに否定する気はないんだけど
(jsの)クラスベースの記述するメリットってどういうとこがあるの?
配属されたプロジェクトのコードを初心者目線で見てクラスベースと関数ベースが混在して読みにくいな、って印象なのよ
367デフォルトの名無しさん
2022/09/27(火) 17:25:00.79ID:fOqsMNTu Reactに関しては関数コンポーネントしか使わないけど、それ以外の部分では臨機応変に使うのみよ。まぁそれでもclassの出番はかなり限定されるけど……
368デフォルトの名無しさん
2022/09/27(火) 17:28:55.43ID:YFL0VkhR プロジェクトメンバーにどうして混在してるのか聞いてみた?
369デフォルトの名無しさん
2022/09/27(火) 17:29:21.69ID:fOqsMNTu jsにおけるclassの出番って、大量に作成し、なおかつ副作用があるオブジェクトがある場合くらい……。
370デフォルトの名無しさん
2022/09/27(火) 18:13:32.56ID:dJevJ7EZ クラスコンポーネントは公式に非推奨扱いじゃね
371デフォルトの名無しさん
2022/09/27(火) 18:15:33.41ID:397xSubl 話の流れで関数コンポーネントかクラスコンポーネントかの話は終わってるのは分かるっしょ
372デフォルトの名無しさん
2022/09/27(火) 18:20:28.32ID:dJevJ7EZ Reactなので将来容赦なくクラスコンポーネントが無くなるかサポート切ると思う
373デフォルトの名無しさん
2022/09/27(火) 20:04:34.40ID:CMfXpwKQ >>368
うん
「本当はよくないんですけどね~~」
的なことを言ってたよ
他にも
・propsのバケツリレー
・コールバック関数使って 子→親へのprops逆流(これが一番酷い)
・アロー関数とnamed functionの混在
・typeとinterfaceの混在
・mui使ってるのに無駄にemotionでカスタムコンポーネント作成
等々………
どの現場もこんな感じなのかなぁとは思ったりするけど
やっぱ立ち上げ段階でコーディングルールやら設計やらある程度固めとかないとスパゲッティ化するんだね
うん
「本当はよくないんですけどね~~」
的なことを言ってたよ
他にも
・propsのバケツリレー
・コールバック関数使って 子→親へのprops逆流(これが一番酷い)
・アロー関数とnamed functionの混在
・typeとinterfaceの混在
・mui使ってるのに無駄にemotionでカスタムコンポーネント作成
等々………
どの現場もこんな感じなのかなぁとは思ったりするけど
やっぱ立ち上げ段階でコーディングルールやら設計やらある程度固めとかないとスパゲッティ化するんだね
374デフォルトの名無しさん
2022/09/27(火) 20:20:13.86ID:6DdS+dLy プロジェクトメンバーが現状を問題と捉えてるならどういう方針でコードを
書いていけばいいかお伺いを立ててそれに従うべきでしょ
もちろん自分の意見があるならそれも伝えて
書いていけばいいかお伺いを立ててそれに従うべきでしょ
もちろん自分の意見があるならそれも伝えて
375デフォルトの名無しさん
2022/09/27(火) 20:22:10.28ID:fOqsMNTu376デフォルトの名無しさん
2022/09/27(火) 20:39:34.88ID:CMfXpwKQ377デフォルトの名無しさん
2022/09/27(火) 22:23:16.69ID:/UUTRmF2378359
2022/09/27(火) 23:17:49.69ID:oW3s344K >>373
React実践の教科書、2021
基礎はこの本で良い。3日で読める
propsのバケツリレーは、
グローバルState である、useContext を使うと書いてある
これ以上に複雑なものは、Redux, Recoil, Apollo Client など
useMemo など、use何々にはどういう機能があるか、すべて見た方がよい
React実践の教科書、2021
基礎はこの本で良い。3日で読める
propsのバケツリレーは、
グローバルState である、useContext を使うと書いてある
これ以上に複雑なものは、Redux, Recoil, Apollo Client など
useMemo など、use何々にはどういう機能があるか、すべて見た方がよい
379359
2022/09/27(火) 23:29:13.30ID:oW3s344K Reactビギナーズガイド ――コンポーネントベースのフロントエンド開発入門
Stoyan Stefanov, 2017
この本には、createClass と書いてあるけど、
2017年6月には非推奨になっている
var MyComponent = React.createClass({
render: function() {
return React.DOM.span(null, "カスタムコンポーネント");
}
});
Stoyan Stefanov, 2017
この本には、createClass と書いてあるけど、
2017年6月には非推奨になっている
var MyComponent = React.createClass({
render: function() {
return React.DOM.span(null, "カスタムコンポーネント");
}
});
380デフォルトの名無しさん
2022/09/27(火) 23:53:21.49ID:BMrl8a7V なんでそんなにクラスコンポーネントの話にこだわるの?
381デフォルトの名無しさん
2022/09/28(水) 20:45:18.22ID:KHG5QcXL presentationalとcontainerに分けて書くといいよ、って本かなんかで読んだことある。今のプロジェクトでも実践されてる。
で、その辺の構成の都合上、仕方なくコールバック関数使ってpropsの値を子→親に伝播させてるけど普通なの?
一般的には状態管理ライブラリ使うべきだと思ってるけど認識違う?
で、その辺の構成の都合上、仕方なくコールバック関数使ってpropsの値を子→親に伝播させてるけど普通なの?
一般的には状態管理ライブラリ使うべきだと思ってるけど認識違う?
382デフォルトの名無しさん
2022/09/28(水) 21:57:59.16ID:Km2fmn1T プレゼンテーショナルとコンテナに分けるのはRedux全盛時代の流行でhooks以降は廃れた
それとは別に親から子にコールバック渡すのは極めて普通
useReducerなんかそういう使い方がほとんどだろ
その親がほとんどルート(いわゆるAppコンポーネント)に近いくらい上位にいるならそれはグローバルステート
それとは別に親から子にコールバック渡すのは極めて普通
useReducerなんかそういう使い方がほとんどだろ
その親がほとんどルート(いわゆるAppコンポーネント)に近いくらい上位にいるならそれはグローバルステート
383デフォルトの名無しさん
2022/09/28(水) 22:11:03.79ID:0Dahyjoe グローブステートにRxで変更通知でどうですか?
384デフォルトの名無しさん
2022/09/28(水) 22:46:08.76ID:HuYE1qae >>382
へー!なるほど!
その経緯は知らんかったわ!ありがとう
propsの大原則として親→子→……
があって、それを解消するためのグローバルステートと状態管理ライブラリ、という理解なんだけど
グローバルステート使わずに普通にコールバックして直接、
子→親、孫→親みたいな渡し方してるのに違和感感じてたのよ
現場では割と普通のことなのね
へー!なるほど!
その経緯は知らんかったわ!ありがとう
propsの大原則として親→子→……
があって、それを解消するためのグローバルステートと状態管理ライブラリ、という理解なんだけど
グローバルステート使わずに普通にコールバックして直接、
子→親、孫→親みたいな渡し方してるのに違和感感じてたのよ
現場では割と普通のことなのね
385デフォルトの名無しさん
2022/09/28(水) 23:33:30.69ID:N1fcW8jX え、一つのコンポーネントを表示とロジックに分けるやつもう廃れたのか…
今はどういうのが流行りなの?
今はどういうのが流行りなの?
386デフォルトの名無しさん
2022/09/28(水) 23:38:10.61ID:QcgKtZxa ひょっとしてReact Routerって仕組み上ブラウザキャッシュ効かない?
387デフォルトの名無しさん
2022/09/29(木) 01:06:57.42ID:6obmiat7 >>385
ロジックはhooks
データ取得もhooks (swrやReact Query)
そのデータ取得hooksはデータを表示するコンポーネントで呼び出す
これは特にGraphQLではフラグメントコロケーションと呼ばれる
GraphQL以外でもRemixがコロケーションを実現してる
総じて変に分類するより凝集度を高くする方向に進化してる
ロジックはhooks
データ取得もhooks (swrやReact Query)
そのデータ取得hooksはデータを表示するコンポーネントで呼び出す
これは特にGraphQLではフラグメントコロケーションと呼ばれる
GraphQL以外でもRemixがコロケーションを実現してる
総じて変に分類するより凝集度を高くする方向に進化してる
388デフォルトの名無しさん
2022/09/29(木) 01:29:18.28ID:ffAnOOZb >>387
例えば複雑な条件と処理に応じた多様なウンコの画像表示するコンポーネントShowUnkoがあったとして
その条件や処理をShowUnkoの中に全部書くのが流行りなん?
presentationalとcontainerの例だと
複雑な条件と処理をcontainerに記述して
算出した結果をpresentationalに渡してウンコの画像が出るけど
今の流行りは色々なライブラリ駆使してそれらを一つに纏める、ってこと?
…まぁ少なくとも個人開発してる頃は後者のが全然やりやすかったけど
例えば複雑な条件と処理に応じた多様なウンコの画像表示するコンポーネントShowUnkoがあったとして
その条件や処理をShowUnkoの中に全部書くのが流行りなん?
presentationalとcontainerの例だと
複雑な条件と処理をcontainerに記述して
算出した結果をpresentationalに渡してウンコの画像が出るけど
今の流行りは色々なライブラリ駆使してそれらを一つに纏める、ってこと?
…まぁ少なくとも個人開発してる頃は後者のが全然やりやすかったけど
389デフォルトの名無しさん
2022/09/29(木) 07:28:27.58ID:+pwL/l2M >>386
くっそ短絡的だった。サイズがデカイjsファイルだけURL固定すりゃ良いだけだったわ……
くっそ短絡的だった。サイズがデカイjsファイルだけURL固定すりゃ良いだけだったわ……
390デフォルトの名無しさん
2022/09/29(木) 07:40:58.14ID:6obmiat7391デフォルトの名無しさん
2022/09/29(木) 08:51:14.08ID:DUgkcSyO Ruby on Rails では、コントローラーの肥大化を防ぐために、
Skinny Controller, Fat Model を推奨した。
その結果、モデルが肥大化した
そこで今度は、モデルの処理を減らすために、
Form Object, Service Object へ処理を分けた
また表示処理は、Presenter へ分けた。
それで、Form Presenter, Model Presenter が出来た
Skinny Controller, Fat Model を推奨した。
その結果、モデルが肥大化した
そこで今度は、モデルの処理を減らすために、
Form Object, Service Object へ処理を分けた
また表示処理は、Presenter へ分けた。
それで、Form Presenter, Model Presenter が出来た
392デフォルトの名無しさん
2022/09/29(木) 08:54:50.37ID:vsyIBCv9393デフォルトの名無しさん
2022/09/29(木) 09:34:16.50ID:6obmiat7 >>392
そういうこと
そういうこと
394359
2022/09/29(木) 09:39:43.34ID:DUgkcSyO React実践の教科書、2021
この本には、カスタムフック・自作のHooks も書いてある
ロジックをコンポーネントから分離し、複数コンポーネントで再利用する。
共有ロジック
この本には、カスタムフック・自作のHooks も書いてある
ロジックをコンポーネントから分離し、複数コンポーネントで再利用する。
共有ロジック
395デフォルトの名無しさん
2022/09/29(木) 09:52:34.39ID:clewMKt/ >>393
hooks限定である必要はないと思うが...
hooks限定である必要はないと思うが...
396デフォルトの名無しさん
2022/09/29(木) 10:45:31.47ID:6obmiat7 >>395
元々コンテナコンポーネントに書く必要がないようなロジックの話をしてるつもりはないんだよなぁ
React無関係なロジックを普通の関数に切り出す話ならReactスレで話さなくていいだろ
状態やライフサイクルなどReactに依存したロジックを切り出すならuseStateやuseEffectを使う関数になりそれはカスタムhooksと呼ばれるということ
元々コンテナコンポーネントに書く必要がないようなロジックの話をしてるつもりはないんだよなぁ
React無関係なロジックを普通の関数に切り出す話ならReactスレで話さなくていいだろ
状態やライフサイクルなどReactに依存したロジックを切り出すならuseStateやuseEffectを使う関数になりそれはカスタムhooksと呼ばれるということ
397デフォルトの名無しさん
2022/09/29(木) 10:54:55.41ID:clewMKt/ ステートレスなロジックも意味なくhooksとして?実装するとでも言うのかい?
398デフォルトの名無しさん
2022/09/29(木) 11:20:12.57ID:vsyIBCv9 ごめん、一番聞きたかったのは
コールバック等使ったpropsの逆流(リフトアップ?)のことなんだけど
例えば、ダイアログ等実装する場合recoil使ってstate管理すれば簡単に実装出来ると思うんだけど
わざわざリフトアップする必要ってあるの??
コールバック等使ったpropsの逆流(リフトアップ?)のことなんだけど
例えば、ダイアログ等実装する場合recoil使ってstate管理すれば簡単に実装出来ると思うんだけど
わざわざリフトアップする必要ってあるの??
399デフォルトの名無しさん
2022/09/29(木) 11:41:08.20ID:RG+lw4Yl 俺の場合はコントロールの状態は極力propsで渡して
そのコントロール起因で発生した状態の変更は
そのコントロールの外部からディスパッチして
またコントロールのpropsとして再投入するパターンに落ち着いた
そのコントロール起因で発生した状態の変更は
そのコントロールの外部からディスパッチして
またコントロールのpropsとして再投入するパターンに落ち着いた
400デフォルトの名無しさん
2022/09/29(木) 12:43:16.88ID:N+5tSsEm 全部props渡しはどのコンポーネントが何のデータに依存してるか明確にわかるのが好き
401デフォルトの名無しさん
2022/09/29(木) 13:42:04.91ID:RG+lw4Yl propsて受け取った状態を
内部てstateとして別管理すると嵌まるパターンが多いね
内部てstateとして別管理すると嵌まるパターンが多いね
402デフォルトの名無しさん
2022/10/04(火) 20:36:43.24ID:R+w5qX88 React勉強中です
テーブルが例えば最大行数20行として、新しいデータを取得するたびに先頭行に追加、末尾データは削除、というのをしたいです。
以前直接DOMを操作していたときは、テーブルのElementに対し、insertRow()、deleteRow()を行っていました。
これをReactでやろうとした時、テーブルの各行のデータを配列で持っているとすると、下記のようにmapを使って各行のHTMLを生成するというやりかたがあるかと思いますが、
この場合は行の追加の度に全行が再レンダリングされてしまいますよね?
const table_data = ['a', 'b', 'c', 〜]
return(
<tbody>
{
table_data.map((val) =><tr><td>{val}</td></tr>)
}
</tbody>
)
前述のような先頭行に追加、末尾行は削除、というのをReactでやるとすると、どいういう感じの処理になるのでしょうか?
ヒントをいただけると助かります。
まずは、1行ずつをコンポーネントにするのは必須ですかね?
テーブルが例えば最大行数20行として、新しいデータを取得するたびに先頭行に追加、末尾データは削除、というのをしたいです。
以前直接DOMを操作していたときは、テーブルのElementに対し、insertRow()、deleteRow()を行っていました。
これをReactでやろうとした時、テーブルの各行のデータを配列で持っているとすると、下記のようにmapを使って各行のHTMLを生成するというやりかたがあるかと思いますが、
この場合は行の追加の度に全行が再レンダリングされてしまいますよね?
const table_data = ['a', 'b', 'c', 〜]
return(
<tbody>
{
table_data.map((val) =><tr><td>{val}</td></tr>)
}
</tbody>
)
前述のような先頭行に追加、末尾行は削除、というのをReactでやるとすると、どいういう感じの処理になるのでしょうか?
ヒントをいただけると助かります。
まずは、1行ずつをコンポーネントにするのは必須ですかね?
403デフォルトの名無しさん
2022/10/04(火) 21:43:53.97ID:ZExEo8/e404デフォルトの名無しさん
2022/10/04(火) 22:08:33.94ID:R+w5qX88405デフォルトの名無しさん
2022/10/05(水) 00:29:27.00ID:zhKCpglg keyはどのみち付けないとWarning出るね
バックエンド連携とかどうするつもりなのか知らんけど
普通に先頭20件だけ表示するように指定してやって
useEffectでtable_dataを監視してやればすんなり行きそうだけどなぁ
バックエンド連携とかどうするつもりなのか知らんけど
普通に先頭20件だけ表示するように指定してやって
useEffectでtable_dataを監視してやればすんなり行きそうだけどなぁ
406デフォルトの名無しさん
2022/10/05(水) 10:49:27.30ID:RsX5Dgpw >>405
ありがとうございます。
useStateでテーブル用データの配列を管理し、データ取得されるたびにその配列の先頭に追加、sliceで20件だけ切り出し、という方法でやりたいことはできました。
ユニークなkeyを付けることで再レンダリング対象が更新部分だけになるのも確認できました。
データはWebSocketで受信して取得しますが、どなたかのサイトで紹介されていた、コンポーネント内のuseRefでWebSocketオブジェクトを持ち、useEffectで初回時のみに接続するという方法でとりあえあず動作しました。
ありがとうございます。
useStateでテーブル用データの配列を管理し、データ取得されるたびにその配列の先頭に追加、sliceで20件だけ切り出し、という方法でやりたいことはできました。
ユニークなkeyを付けることで再レンダリング対象が更新部分だけになるのも確認できました。
データはWebSocketで受信して取得しますが、どなたかのサイトで紹介されていた、コンポーネント内のuseRefでWebSocketオブジェクトを持ち、useEffectで初回時のみに接続するという方法でとりあえあず動作しました。
407デフォルトの名無しさん
2022/11/05(土) 23:06:02.94ID:uWVkhL+y react native詳しいニキ教えて
下部に表示されるメニューバー(以下、Menu)のコンポーネント作ってて
ページによって表示/非表示の設定をしたいんだ
各ページコンポーネントでMenuを直接呼び出すような作りにすれば確かに実装出来るけど
ページが切り替わった時点でアニメーションが途切れるし、なによりナンセンスな気がする
で、次の案。
App→Main→各ページという構成を取ってるけど
MainでMenuを呼び出すようにした。
で、これをRecoilで管理するboolean型のグローバルstateで表示/非表示にする。
あとは各ページの初回レンダリング時にstateの値を書き換えるだけで解決……と思ったけど
前のページにバックしたときに改めてstateの値が書き換わらないんだ。
これを踏まえて何かいい方法ないですか?
下部に表示されるメニューバー(以下、Menu)のコンポーネント作ってて
ページによって表示/非表示の設定をしたいんだ
各ページコンポーネントでMenuを直接呼び出すような作りにすれば確かに実装出来るけど
ページが切り替わった時点でアニメーションが途切れるし、なによりナンセンスな気がする
で、次の案。
App→Main→各ページという構成を取ってるけど
MainでMenuを呼び出すようにした。
で、これをRecoilで管理するboolean型のグローバルstateで表示/非表示にする。
あとは各ページの初回レンダリング時にstateの値を書き換えるだけで解決……と思ったけど
前のページにバックしたときに改めてstateの値が書き換わらないんだ。
これを踏まえて何かいい方法ないですか?
408デフォルトの名無しさん
2022/11/05(土) 23:47:25.78ID:ocl/XM+V 知らんけどrecoil-syncってのがあるらしいな知らんけど
409.NET MAUI HighSchool
2022/11/11(金) 12:32:52.36ID:kw0okeTL Metaが倒産したらReactどうなってしまうんだ?ってレス見たんだけどほんとどうなってしまうん?
誰かに買われるとか???
誰かに買われるとか???
410デフォルトの名無しさん
2022/11/11(金) 12:42:14.20ID:BY70aiHB Vercelは確実に欲しがる。Remixを買ったShopifyも欲しがるかも。Googleが掻っ攫うかもしれない
411.NET MAUI HighSchool
2022/11/11(金) 12:43:10.48ID:kw0okeTL やっぱり大手に買われるのか…
412デフォルトの名無しさん
2022/11/11(金) 13:19:40.85ID:P8cdLDDc React NativeはMSが持っていきそう
413.NET MAUI HighSchool
2022/11/11(金) 13:20:58.38ID:kw0okeTL414デフォルトの名無しさん
2022/11/21(月) 04:31:38.78ID:9tdtmBpP415デフォルトの名無しさん
2022/11/21(月) 19:55:26.69ID:WHQv7Vmu >>414
入ったプロジェクトがこんな状態になってたらマネージャーかリーダーの判断力があやしすぎて即転職考えるかもしれん
入ったプロジェクトがこんな状態になってたらマネージャーかリーダーの判断力があやしすぎて即転職考えるかもしれん
416デフォルトの名無しさん
2022/11/21(月) 20:03:57.34ID:WHQv7Vmu (試みとしては面白いと思うけど)
417デフォルトの名無しさん
2022/11/21(月) 20:32:50.68ID:530w1iq8 hyperTextじゃん
418デフォルトの名無しさん
2022/11/21(月) 20:33:18.27ID:530w1iq8 textじゃねえやHyperScript
419デフォルトの名無しさん
2022/11/21(月) 20:54:44.24ID:F57+7x5h ClojureScriptでReact使うのがまんまそんなだった
Lisp界隈の人はなんでもS式だからな
Lisp界隈の人はなんでもS式だからな
420デフォルトの名無しさん
2022/11/22(火) 07:44:22.59ID:XlS3y7OH421デフォルトの名無しさん
2022/11/22(火) 09:58:17.91ID:J3G+pIhw それならここに来る必要ないやろ
422デフォルトの名無しさん
2022/11/23(水) 04:11:09.42ID:TMK4+5Kw reactでjsx使わない話なんだけどダメ?
タグ手打ちで補完が効かないhyperscriptとかもっとマイナーななんとかhelperとか
誰も使ってない怪しいライブラリに頼らずとも自分で200行コード書くだけで
jsx使わないで済むのは自分は衝撃だった。
見たことない構文だけどただのjsなんで補完もインデントも問題なし。閉じタグ書かなくていい。
[div, {className: 'game-info'},
[div, status,],
[ol, moves,],
],
タグ手打ちで補完が効かないhyperscriptとかもっとマイナーななんとかhelperとか
誰も使ってない怪しいライブラリに頼らずとも自分で200行コード書くだけで
jsx使わないで済むのは自分は衝撃だった。
見たことない構文だけどただのjsなんで補完もインデントも問題なし。閉じタグ書かなくていい。
[div, {className: 'game-info'},
[div, status,],
[ol, moves,],
],
423デフォルトの名無しさん
2022/11/23(水) 04:25:07.28ID:mlnYnqLg jQuery絶対王者
424デフォルトの名無しさん
2022/11/23(水) 05:07:49.07ID:AN01Xhf0 >>422
チームで合意が取れてれば良いんじゃないかな
自分は好みとかあまりなくて標準だったりプロジェクトだったりに適応するのが好きだから
プロジェクトでそうなってたら合わせるかな
もちろん自分が一からやるなら現時点で大勢が使ってる標準的なjsxを使うし
チームで合意が取れてれば良いんじゃないかな
自分は好みとかあまりなくて標準だったりプロジェクトだったりに適応するのが好きだから
プロジェクトでそうなってたら合わせるかな
もちろん自分が一からやるなら現時点で大勢が使ってる標準的なjsxを使うし
425デフォルトの名無しさん
2022/11/23(水) 08:06:55.32ID:Wy3yaUuF html in jsはカッコ地獄で使い続けられないと思った
mapや三項演算が組み合わさると、あっという間にreadabilityも破綻
jsxは < > 構文なのでカッコに関してはマシ
mapや三項演算が組み合わさると、あっという間にreadabilityも破綻
jsxは < > 構文なのでカッコに関してはマシ
426デフォルトの名無しさん
2022/11/23(水) 09:09:30.10ID:6E3xEeS7 HTMLをHTMLとして認識しにくいのはイヤ
427デフォルトの名無しさん
2022/11/23(水) 13:34:39.63ID:Y3sgMMcN jsx ももはやただのjsなんで補完もインデントも問題ないんだよなあ
閉じタグはあった方が見やすいしこれも補完聞くから書くのも手間じゃないし
閉じタグはあった方が見やすいしこれも補完聞くから書くのも手間じゃないし
428デフォルトの名無しさん
2022/11/23(水) 14:08:23.15ID:kuPI2CLi JSXの構文はもっと省略できるよね
429デフォルトの名無しさん
2022/11/23(水) 14:20:57.19ID:pkO67U6a ReactがFB内で生まれたのがES5より前だからかJSXでclassやforを属性名として使えないのはそろそろ修正してもいいと思うわ
430デフォルトの名無しさん
2022/11/23(水) 15:21:48.20ID:Q2Zz8xgu 逆にJSの言語仕様としてのクラスが要らんのやないかって感じするしな
431デフォルトの名無しさん
2022/11/23(水) 15:46:18.91ID:KqoXuT6V432デフォルトの名無しさん
2022/11/27(日) 18:18:42.40ID:DGQvXdXK reactでjsx使いたくないなReact.createElement使えばすむだろ
pure jsだしreact自身がメンテナだぞ
pure jsだしreact自身がメンテナだぞ
433デフォルトの名無しさん
2022/11/28(月) 16:39:23.37ID:bah5acf2 class使わんかったらええしjsxも受け入れればええやん
中途半端に色々俺ルール入れようとするからプロジェクト通したコードがグチャグチャになるんだよ
ガタガタ抜かさずに読みやすいコード書け
中途半端に色々俺ルール入れようとするからプロジェクト通したコードがグチャグチャになるんだよ
ガタガタ抜かさずに読みやすいコード書け
434デフォルトの名無しさん
2022/11/28(月) 17:59:40.28ID:IoJupQtf それはそう
435デフォルトの名無しさん
2022/11/28(月) 18:10:16.07ID:HJ3Js2uA React.createElement() は、見たことない。
クラスなのか?
今は、関数しか使わない
クラスなのか?
今は、関数しか使わない
436デフォルトの名無しさん
2022/11/28(月) 20:53:35.42ID:UVD224c9437デフォルトの名無しさん
2022/12/03(土) 08:35:21.91ID:taaLhEhL フロントエンドはAIとローコードにより死んでいきそう
438デフォルトの名無しさん
2022/12/03(土) 10:06:11.17ID:nGrXXmmc フロントエンドの連中が死んでいったら愉快すぎるだろうな。
439デフォルトの名無しさん
2022/12/03(土) 10:26:28.26ID:yzFmn8Js 管理画面作れるローコードツールやばいで?
t-wadaさんの会社が出資してるやつ
ガチでフロントエンドいらんw
t-wadaさんの会社が出資してるやつ
ガチでフロントエンドいらんw
440デフォルトの名無しさん
2022/12/03(土) 11:52:54.38ID:olmTGWDy できねぇ自分を棚に上げてよく言うぜ
441デフォルトの名無しさん
2022/12/03(土) 13:16:27.12ID:DRrYSu6r フロントエンドができるのは
どのくらいのレベル?
どのくらいのレベル?
442デフォルトの名無しさん
2022/12/04(日) 10:14:28.76ID:Mf+W6hFq https://pleasanter.org/
これとか使えそうだな
これとか使えそうだな
443デフォルトの名無しさん
2022/12/04(日) 11:54:38.25ID:Wvq70p6a 周りが適性なさすぎて消去法でバックエンドやるハメになり
苦労もあったが経験しておけて良かった
苦労もあったが経験しておけて良かった
444デフォルトの名無しさん
2022/12/08(木) 08:12:36.96ID:Z0lc4TAH ここ本スレ?
445デフォルトの名無しさん
2023/01/15(日) 12:22:06.03ID:c+nrjCWx みんなuseStateのとき以外でset~って関数名付けてる?
446デフォルトの名無しさん
2023/02/11(土) 08:10:49.33ID:vzM9dagC >>439
何? 使ってみたいから教えて
何? 使ってみたいから教えて
447デフォルトの名無しさん
2023/02/14(火) 00:24:32.69ID:L+R7vyp5 知らんけどAirtableとかじゃないの?
448デフォルトの名無しさん
2023/02/20(月) 17:20:13.84ID:o1ZyjHKj Reactが始めてなので変な質問かもしれません。
React.Componentを継承したクラスを作成し、これを「new」した時点でbodyの最後に描画したいです。
具体的にはmodalのクラスなのですが、
import modalClass from './modalClass';
const hoge = new modalClass(); //この時点でbodyの最後に描画されて
hoge.show(); //これで描画されたモーダルが表示される
だけでモーダルを表示したいです。
constructor中でrenderを実行して、戻り値をReact.Domでbodyの最後に置換すれば可能な気がしますが、
このような使い方は一般的でしょうか?
htmlに「<modalClass />」の記述をしたくありません。
React.Componentを継承したクラスを作成し、これを「new」した時点でbodyの最後に描画したいです。
具体的にはmodalのクラスなのですが、
import modalClass from './modalClass';
const hoge = new modalClass(); //この時点でbodyの最後に描画されて
hoge.show(); //これで描画されたモーダルが表示される
だけでモーダルを表示したいです。
constructor中でrenderを実行して、戻り値をReact.Domでbodyの最後に置換すれば可能な気がしますが、
このような使い方は一般的でしょうか?
htmlに「<modalClass />」の記述をしたくありません。
449デフォルトの名無しさん
2023/02/20(月) 17:53:11.21ID:1+J+V+Et >>448
一般的ではないね。ReactコンポーネントであればJSXに<Modal />などと書いておきReactのライフサイクルの中でstate更新して表示/非表示を制御するのが一般的。
あとDOMツリーに要素を「追加」する操作を「描画」と呼んでると今後の理解の妨げになる可能性があるから一回整理したほうが良いかも。(Reactはライフサイクルの意識が結構大事なため)
一般的ではないね。ReactコンポーネントであればJSXに<Modal />などと書いておきReactのライフサイクルの中でstate更新して表示/非表示を制御するのが一般的。
あとDOMツリーに要素を「追加」する操作を「描画」と呼んでると今後の理解の妨げになる可能性があるから一回整理したほうが良いかも。(Reactはライフサイクルの意識が結構大事なため)
450デフォルトの名無しさん
2023/02/20(月) 18:41:24.87ID:o1ZyjHKj はい、一般的ではないのは十分承知しています。
ライフサイクルなどを無視してHTMLの管理と描画のみにreactを使用したいと考えています。
ソースコードとしては下記で行けたのですが、このような使い方が一般的に許されるのかが不安です。
class ExampleComponent extends React.Component {
constructor(props) {
super(props);
const element = this.render();
const container = document.createElement('div');
document.body.appendChild(container);
ReactDOM.render(element, container);
}
show() {
//モーダル表示のDOMの操作
}
render() {
return (
<div>
/** モーダルのHTMLソース **/</div>
);
}
}
ライフサイクルなどを無視してHTMLの管理と描画のみにreactを使用したいと考えています。
ソースコードとしては下記で行けたのですが、このような使い方が一般的に許されるのかが不安です。
class ExampleComponent extends React.Component {
constructor(props) {
super(props);
const element = this.render();
const container = document.createElement('div');
document.body.appendChild(container);
ReactDOM.render(element, container);
}
show() {
//モーダル表示のDOMの操作
}
render() {
return (
<div>
/** モーダルのHTMLソース **/</div>
);
}
}
451デフォルトの名無しさん
2023/02/20(月) 18:48:10.50ID:o1ZyjHKj 動作するのは確認できたので、あとはプロジェクトリーダーの好み次第ですかね。
これが許されればサーバ側のviewでHTML管理しなくて済むようになりますので
コンポーネントの使いまわしが楽になるのですが。
javascriptのみで完結できるので。
これが許されればサーバ側のviewでHTML管理しなくて済むようになりますので
コンポーネントの使いまわしが楽になるのですが。
javascriptのみで完結できるので。
452デフォルトの名無しさん
2023/02/20(月) 20:09:11.05ID:CBterFMa Reactをrender()するHTML要素を動的に追加するのはありだと思うよ
でもそのロジックをReactコンポーネントに入れる必要はないな
ユーティリティな関数でそれをすればReactコンポーネントはクラスではなく関数コンポーネントにもできるし
でもそのロジックをReactコンポーネントに入れる必要はないな
ユーティリティな関数でそれをすればReactコンポーネントはクラスではなく関数コンポーネントにもできるし
453デフォルトの名無しさん
2023/02/20(月) 20:40:21.95ID:1+J+V+Et まず動くようにしたのは素晴らしいけど、たぶんリーダーかは指摘が入るはず。
454デフォルトの名無しさん
2023/02/20(月) 21:16:51.58ID:zSsoBtA6 最初はお手本通りrender関数とコンポーネント挿入関数に2ファイルに別けてたのですが、
一機能実現するために手順を踏んで2ファイル使うのが解り辛いかなと思いました。
作った自分は解るのですが、引き継ぐ人にはシンプルな手順で使えるようにしておきたいです。
render関数とコンポーネントの挿入関数を試行錯誤して一つのファイルにまとめたら >>450のようになりました。
>>450なら
import ExampleComponent from './examplecomponent';
const modal = new ExampleComponent ();
modal.show("メッセージです", "タイトル");
だけで済むので、クラスのusageに書いておけば利用手順も簡単でどの画面でも使えると思います。
reactの定石からは離れますので、やはりreactのプロの目から見ると違和感あるのですね。
一機能実現するために手順を踏んで2ファイル使うのが解り辛いかなと思いました。
作った自分は解るのですが、引き継ぐ人にはシンプルな手順で使えるようにしておきたいです。
render関数とコンポーネントの挿入関数を試行錯誤して一つのファイルにまとめたら >>450のようになりました。
>>450なら
import ExampleComponent from './examplecomponent';
const modal = new ExampleComponent ();
modal.show("メッセージです", "タイトル");
だけで済むので、クラスのusageに書いておけば利用手順も簡単でどの画面でも使えると思います。
reactの定石からは離れますので、やはりreactのプロの目から見ると違和感あるのですね。
455デフォルトの名無しさん
2023/02/20(月) 23:39:55.71ID:qmqKnMRQ Windowsアプリのメッセージダイアログみたいにメソッドひとつで呼び出せる手軽さを実現したいって理解でいいのかな
456デフォルトの名無しさん
2023/02/21(火) 02:04:19.05ID:R25lIONK あちこちに<ExampleComponent />追加したくないってことかな?その場合はProviderやContextを使うのが正式なやり方になると思う。
レイアウトに1個<ExampleComponent />追加する程度はふつうにやることなのでそれはみんなわかると思う。
レイアウトに1個<ExampleComponent />追加する程度はふつうにやることなのでそれはみんなわかると思う。
457デフォルトの名無しさん
2023/02/21(火) 08:04:52.44ID:pYWIE5Lo >Windowsアプリのメッセージダイアログみたいにメソッドひとつで呼び出せる手軽さを実現したいって理解でいいのかな
はい、それであっています。
>あちこちに<ExampleComponent />追加したくないってことかな?
はい、ReactのメリットはJavascriptにHTMLを書ける事なので、HTMLとの依存関係を切って
なるべくJavascriptだけで完結させたいです。
とくにモーダルのような汎用的などこでも使うものは、HTMLに<ExampleComponent />を記述させたくないです。
はい、それであっています。
>あちこちに<ExampleComponent />追加したくないってことかな?
はい、ReactのメリットはJavascriptにHTMLを書ける事なので、HTMLとの依存関係を切って
なるべくJavascriptだけで完結させたいです。
とくにモーダルのような汎用的などこでも使うものは、HTMLに<ExampleComponent />を記述させたくないです。
458デフォルトの名無しさん
2023/02/21(火) 13:34:11.33ID:5AAcCPtU メッセージダイアログ、確認ダイアログ、エラーダイアログなんかの共通系は
どこでも仕込みなしで呼び出したい
あるあるな要求だと思うけどReactではどうやるのが定石なんだろうね
どこでも仕込みなしで呼び出したい
あるあるな要求だと思うけどReactではどうやるのが定石なんだろうね
459デフォルトの名無しさん
2023/02/21(火) 13:52:30.32ID:pYWIE5Lo レイアウトが必要なコンポーネントは、HTMLファイルにreactのタグを埋め込む方向で理解できるのですが
メッセージダイアログのような画面中のレイアウトが必要無い物については
わざわざHTMLファイルにタグ埋め込んでおく必要ないのではと考えています。
javascriptで動的にタグを埋め込むのが良いと思いますが、タグ埋め込む機能をrender機能のファイルと別けたくないですね。
メッセージダイアログのような画面中のレイアウトが必要無い物については
わざわざHTMLファイルにタグ埋め込んでおく必要ないのではと考えています。
javascriptで動的にタグを埋め込むのが良いと思いますが、タグ埋め込む機能をrender機能のファイルと別けたくないですね。
460デフォルトの名無しさん
2023/02/21(火) 14:46:08.62ID:4BxaQg+7 Railsとかの既存画面にReactでモーダルだけ作ろうって話?
jQueryの代わりにReactみたいな使い方ならその時点で定石から外れてるわな
jQueryの代わりにReactみたいな使い方ならその時点で定石から外れてるわな
461デフォルトの名無しさん
2023/02/21(火) 14:59:48.47ID:5AAcCPtU いや、そういう話ではないよ
462デフォルトの名無しさん
2023/02/21(火) 15:18:03.61ID:4BxaQg+7 へ?普通にSPA?
それなのにDOMのエレメント作ってrender()呼ぶって?ただのアホじゃん
それなのにDOMのエレメント作ってrender()呼ぶって?ただのアホじゃん
463デフォルトの名無しさん
2023/02/21(火) 16:09:35.73ID:5AAcCPtU そりゃ動機があって試行錯誤の中でイレギュラーなことをしていて
より良い方法、より一般的な方法はないかという問いかけなんだし
より良い方法、より一般的な方法はないかという問いかけなんだし
464デフォルトの名無しさん
2023/02/21(火) 16:42:00.18ID:4BxaQg+7 試行錯誤にしても道を外れすぎ
React.renderはReactアプリ(コンポーネントツリー)全体をDOMにマウントするためのAPIで個々のコンポーネントが呼び出すもんじゃない
大抵はフレームワーク的なコード(CRAやNext.js)が呼び出すからアプリからは呼ばない
共通のモーダルコンポーネントはAppコンポーネントなどツリーのルート近くに一つだけ置く
そしてモーダルはそれを開くためのカスタムフックを利用者に提供する
モーダルの開閉制御に使うステートはRedux等のライブラリを使ってもいいしContext + useStateでもいい
React.renderはReactアプリ(コンポーネントツリー)全体をDOMにマウントするためのAPIで個々のコンポーネントが呼び出すもんじゃない
大抵はフレームワーク的なコード(CRAやNext.js)が呼び出すからアプリからは呼ばない
共通のモーダルコンポーネントはAppコンポーネントなどツリーのルート近くに一つだけ置く
そしてモーダルはそれを開くためのカスタムフックを利用者に提供する
モーダルの開閉制御に使うステートはRedux等のライブラリを使ってもいいしContext + useStateでもいい
465デフォルトの名無しさん
2023/02/21(火) 17:16:01.15ID:i5fGgfrB 試行錯誤ってのはそんなもんでしょ
まして最初にReactに不慣れだと断ってるわけだし
寛容にいこうよ
まして最初にReactに不慣れだと断ってるわけだし
寛容にいこうよ
466デフォルトの名無しさん
2023/02/21(火) 18:46:29.89ID:pYWIE5Lo イレギュラーなやり方ということは重々承知しています。
自分のやり方はreactのフル機能を使うよりも、ESM+Reactの機能の一部を使ったやり方になり
Reactの恩恵を受けられない事を承知しています。
その上で使い勝手を選択して、react機能の一部のみを使った開発を行うのもありなのではと思ったりしています。
ダイアログなどの静的なコンテンツについてはreactの機能を全て使い切らなくとも、reactが無くとも実現できますし、
reactの性能を発揮できる開発内容でもないと思っています。
静的HTMLのページをreactで作るのが効率悪いのと同様に、静的なダイアログ程度のものについてもreact使わない方が良いんじゃないかと。
その上で便利な部分(javascript上でHTMLを共有化できる)だけ摘まみ食いしたいです。
reactの専門家から見ると節操無いでしょうが、開発効率や汎用性を考えた場合に
こういったやり方はどうなんでしょうかと意見を」聞きたかったです。
自分のやり方はreactのフル機能を使うよりも、ESM+Reactの機能の一部を使ったやり方になり
Reactの恩恵を受けられない事を承知しています。
その上で使い勝手を選択して、react機能の一部のみを使った開発を行うのもありなのではと思ったりしています。
ダイアログなどの静的なコンテンツについてはreactの機能を全て使い切らなくとも、reactが無くとも実現できますし、
reactの性能を発揮できる開発内容でもないと思っています。
静的HTMLのページをreactで作るのが効率悪いのと同様に、静的なダイアログ程度のものについてもreact使わない方が良いんじゃないかと。
その上で便利な部分(javascript上でHTMLを共有化できる)だけ摘まみ食いしたいです。
reactの専門家から見ると節操無いでしょうが、開発効率や汎用性を考えた場合に
こういったやり方はどうなんでしょうかと意見を」聞きたかったです。
レスを投稿する
ニュース
- 「日本はパンダがいなくなる状況に直面するだろう」 中国メディア、専門家の見方伝える [♪♪♪★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★11 [樽悶★]
- 止まらぬ「日本売り」 高市財政への懸念で進む金利上昇と円安 ★2 [蚤の市★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★12 [樽悶★]
- 【無言】中国怒らせた高市首相→1週間だんまり、国民に実害も説明なし 中国問題を避けてスルー… ★5 [BFU★]
- 外国人の犯罪率は日本人の1.72倍 警察庁が短期滞在者除いた数字を参院内閣委で答弁★2 [七波羅探題★]
- 🏡
- 【高市悲報】大暴落 [115996789]
- 【速報】東京から人が消える [329329848]
- 【悲報】無能ぼく、仕事では「どうやったら楽できるか」を最優先に考えてしまうwwwwww
- 友達がお前らの事をさ…
- 【画像】おじさん起きる、そして鹿と会う
