React と React Native のスレ (481レス)
上下前次1-新
172: 2021/09/27(月)12:09 ID:DYuWVLW4(2/2) AAS
再起動したら直ったわ
173(1): 2021/09/28(火)17:29 ID:s3NqJ5bC(1/3) AAS
reactのコンポーネントにクリックとかのイベント処理を付ける時って、onClick={clickHandler}みたいに書くじゃない
このclickHandlerの処理の中でコンポーネントに渡してある属性を参照したいときってどう書くんだ?
clickHandlerを関数を返す関数にして、
clickHandler =(props)=> () =>{‥}
コンポーネントにはonClick={clickHandler(props)}ってやればできるんだけど、これだとuseCallbackが使えなくて毎回レンダリングし直されちゃうんだよな
event.targetはネイティブのDOMの情報しか載ってこないし、誰か教えてえろいひと
174(1): 2021/09/28(火)18:22 ID:Tl6wB3bi(1) AAS
>>173
JSの基本機能にクロージャーというのがあってだな
なんと!clickHandlerの中から外(つまりコンポーネント)の変数を参照できるんだよ!
const clickHandler = () => {
console.log(props.xxx)
}
useCallback使ってるならdepsに並べる
const clickHandler = useCallback(() => {
console.log(props.xxx)
}, [props.xxx])
175(1): 2021/09/28(火)21:49 ID:s3NqJ5bC(2/3) AAS
>>174
変数名をpropsにしたのが紛らわしかったかもしれんが
{arr.map((v)=>{
<ComponentA key=v.Id onClick={clickHandler} />
})}
みたいなことをやってるときにclickHandlerの処理の中でvを参照するにはどうしたらいいのかな?っていうのが聞きたいことなんだが、クロージャ?にあたるのか?
分かりにくくてスマン
176(2): 2021/09/28(火)22:23 ID:yTRBGUiM(1) AAS
memo 化したコンポーネントで ComponentA をラップし props と clickHandler を受け取って onClick={() => clickHandler(props)} とする
177(2): 2021/09/28(火)22:25 ID:84Zwu3SC(1) AAS
>>175
それならComponentAにvを渡してその中で
onXxx={(ev) => clickHandler(ev, v)}
178(1): 2021/09/28(火)23:04 ID:s3NqJ5bC(3/3) AAS
>>176
なーるほどなぁ、面倒だけど確かにそれならできそう
>>177
おー?これはuseCallbackで包めるんか?ちょっと明日試してみるわ
おまえらthx
179: 2021/09/28(火)23:30 ID:pKLoFE48(1) AAS
>>178
input等のdomにマップされるコンポーネントに直接渡す関数をuseCallbackする必要はない
180(1): 2021/09/29(水)23:01 ID:lzBphG+K(1) AAS
>>177
あ、これ>>176と同じこと言ってるんか、勘違いしてたわ
このためにラップしたコンポーネントを作らなきゃいけないってのはなんかイマイチだけどそれくらいしかなさそうね。ありがとう
181: 2021/09/29(水)23:13 ID:VRCLPgDh(1) AAS
>>180
え?177は俺だけどラップしたコンポーネントってなんのことかわからねーぞw
ComponentAもおまえが作ってるんならそんなのいらないだろ
182: 2021/09/30(木)12:42 ID:TAcHeIwJ(1) AAS
componentAが自作かそうでないかに関わらず言ってることは同じだわな
どちらも子コンポーネント内で実装しないといけないことを言ってるんだから
183: 2021/09/30(木)14:23 ID:uxDakMZz(1) AAS
質問主はどう見ても>>155なんだから自作前提でよくて余計なことは省いた方がいいと思うね
184: 2021/10/03(日)21:36 ID:9xTT9AKy(1) AAS
material-uiのspeed dialをネストしたいんだけど無理かな?speed dial actionの代わりにspeed dialそのものを子に持ちたい
185(1): 2021/10/19(火)10:58 ID:I/uBXkGk(1) AAS
VSCodeでsassファイル保存時に自動フォーマット掛けたいですけどそれ出来る拡張ありますか?
186: 2021/10/20(水)21:47 ID:VGECjsMp(1) AAS
>>185
marketplace.visualstudio.com/items?itemName=BdSoftware.format-on-auto-save
標準搭載してほしいわ
187: 2021/11/09(火)10:45 ID:tf9NUtHx(1) AAS
イベントと副作用フックどっちでもいい時に、どちらを優先して使うほうがより良いとかってある?
keyを入力するテキスト入力欄、valueを表示するテキスト表示欄がある
keyが変化するとデータを鯖から取ってきてvalueに設定したい
副作用フックでkeyを監視するか、key入力欄の変更通知イベントを使うか、どっちでもいいけど、どちらかというとどっちが良いか?
188: 2021/11/09(火)11:13 ID:ppTxKkYh(1) AAS
入力欄の変更イベントで十分だろ
そしてuseDefferedValue経由の値でサーバを叩く
189: 2021/11/17(水)09:45 ID:gjeYELEc(1/2) AAS
素朴な疑問
状態を持ったり副作用を持ったりするコンポーネントってぶっちゃけclassのほうが可読性いいよね?
フックは書く時は楽だけど後で見るとナンジャコラ?ってなる
190: 2021/11/17(水)10:40 ID:yi3gjxGP(1) AAS
>>110を読んでないってわかんだよね
191(2): 2021/11/17(水)11:55 ID:gjeYELEc(2/2) AAS
例えばの話、コンポーネントの初期化処理と終了処理はどこでやるの?って新人の疑問に対して
classコンポーネントなら
見たまんまcomponentDidMount、componentWillUnmountだよ
このメソッドを用意しとくとこのコンポーネントを持って管理してるフレームワークさんが、
いい感じのタイミングで呼び出してくれるよ
こう教えてやれば、直感ですぐさまなるほど、と理解して貰える
しかし関数コンポーネントでは純粋関数とは何か、副作用とは何か、フックとは何か、useEffectとは何か、useEffectの引数は何か、引数の戻りの関数は何か
ということをよく理解して頭の中で読み替えないといけない
なのでじっくり時間をかけて教えても、それでも理解するには時間を要する
関数コンポーネントはこんなのが無数にある
だから理解しにくい
タイピングの文字数は減るので書くのは楽だ、ということは確かだが
理解しやすさで言うと、ちょっとね、、、
192: 2021/11/17(水)16:48 ID:QzSwOiy0(1) AAS
宣言的なReactを命令的に読み替えるんじゃ永遠に理解できないだろうな
そういう教え方をされる新人がかわいそうだし同情しかない
193: 2021/11/17(水)20:00 ID:h3betjKK(1) AAS
reactでいくつかのファイルがあって保存(ctrl+s)すると
コンパイルしてくれるファイルとしてくれないファイルがあるんだけど違いってなんですか。。。
194(1): 2021/11/17(水)20:55 ID:Wtj2hevs(1) AAS
使ってるide (vscodeとか) のスレで聞け
195: 2021/11/17(水)21:47 ID:h3+MjybB(1) AAS
>>191
クラスって何?メソッドって何?継承って何?
196: 2021/11/17(水)22:25 ID:N4+deCyE(1) AAS
>>191
クラスだとマウント/アンマウントじゃなくてpropsが変わるたびに開始処理終了処理するってなると全然違うこと教えなきゃダメだろ
197: 2021/11/18(木)00:22 ID:3dlOBCKi(1/7) AAS
レアクトは宣言的だけど実用的なアプリケーションは全て有状態の手続きの塊じゃん?
ということはレアクトと「この不都合な現実世界」を上手いこと切り離して管理する方法が必要なんだよ
それがオブジェクト指向ってわけでね
関数コンポーネントは分離すべき手続きと宣言が渾然一体となっていてわかりにくい
オブジェクト指向を使えば
オブジェクトとオブジェクトを描画する純粋関数に分離することは容易い
それがrenderメソッドな訳だな
198: 2021/11/18(木)00:44 ID:aYAbIgl/(1) AAS
レアクト
199: 2021/11/18(木)00:47 ID:F8B2t3Oi(1) AAS
また知恵遅れクラス信者か
この流れ何度目だよw
200: 2021/11/18(木)01:15 ID:3dlOBCKi(2/7) AAS
関数が優位に立つのはDOMのレンダリングだけ
状態管理と手続きという不可避の現実はオブジェクト指向で処理したほうがいい
関数は状態が無いものだけを扱うべき
201(1): 2021/11/18(木)07:26 ID:sAyjJzQx(1) AAS
状態や手続きを分離する方法はオブジェクトだけじゃない
モナドもそれだしReactの場合は代数的作用が背景にある
上下前次1-新書関写板覧索設栞歴
あと 280 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.007s