毎日朝7時更新/プログラミング芸人/WEBデザイン/フォトグラファー/インド/JavaScript芸人/Reactエンジニア
あなたは Hooks を使って複数のコンポーネントを書きました。ちょっとしたアプリも作ったことがあるでしょう。満足もしている。API にも慣れて、その過程でコツも掴んできました。しかも重複したロジックを転用できるよう Custom Hooks を作り、同僚に自慢して見たり。 でも useEffect を使う度、いまいちピンときません。class のライフサイクルとは似ているけど、何かが違う。そしていろんな疑問を抱き始めます。 🤔 componentDidMount を useEffect で再現する方法は? 🤔 useEffect 内で正確に非同期処理を行う方法とは? []ってなに? 🤔 関数をエフェクトの依存関係として記すべき? 🤔 非同期処理の無限ループがたまに起こるのはなぜ? 🤔 古い state か props がエフェクト内にたまに入るのはなぜ? 私も Hooks を使
サンプルコード まず Next.js で動かしてみます。 様々なコンポーネント形式で動かせますが基本的にフックを使っていきます。 サンプルコードに accept を追加。 ドロップエリアにファイルをドラッグすると isDragActive が true になります。 import React, { useCallback } from "react"; import { useDropzone } from "react-dropzone"; const App = () => { const accept = "image/*"; //"image/jpeg, image/png"; const onDrop = useCallback((acceptedFiles) => { console.log(acceptedFiles); }, []); const { getRootProp
2021年10月7日追記:初版の記事タイトルが誤っているというご指摘を受けたため、修正いたしました。 こんにちは、Gaji-Labo アシスタントエンジニアの石垣です。 今回は、React 用 UI フレームワークである Material-UI と、ドラッグ&ドロップ可能なリストを作成できるライブラリ react-smooth-dnd でリストを実装する機会があったため、その実装方法についてまとめてみようと思います。 概要Material Design のコンポーネントの一つにドラッグ&ドロップ可能なリストが定義されていますが、Material-UI にはデフォルトではそのコンポーネントは用意されていません。 そのため、別途プラグインを導入して独自に実装する必要がありました。 いくつかプラグインの候補がありましたが、今回は以下の条件を満たしているかどうかでプラグインを決めました。 ある程度
<p className={'string' + ' ' + `${style.news}`}>テキスト</p> // or <p className={'string' + ' ' + (style.news)}>テキスト</p> 間に半角スペースを入れて結合するのがポイントっぽい。 にしてもなんかスマートじゃない気がするのは私だけだろか・・・笑 参考 [フロントエンド] React.jsのclassNameに、複数のクラスを簡単に指定する(Classnames利用) 完全に独り言 ググり方が悪いのかなかなか出てこなくて、JSXに慣れてないのでちょっと苦戦w あんまりマルチクラス的なことをReactではやらないのかな? Atomic Componentsでやる場合はそもそも必要ないからか? コンテナ的なコンポーネントとかでやったりしない? みたいな疑問がいっぱい。
useEffect useRef が唯一の解決策 Timeout、TimeIntervalの動作に頭を抱えているあなた。多分、useEffectやuseRef、useCallbackなどの文字を既にみてきたと思います。でも、避けてきませんでしたか?(私は避け続けていました。) もはや、この壁から逃げることはできません。今対面している課題の解決には、useEffect・useRefしかないのです!!!! 大丈夫。めちゃくちゃ簡単。めちゃくちゃ便利。全部使うわけじゃない! とりあえず、コードだけ置いておく。知ってる。現場の人はまずは動くものが欲しい。時間ができたらまた戻ってきて理解して。 【サンプルコード】レンダーした時に1度だけ実行して、毎秒カウントし続けるタイマー useEffectで、はじめの一度きりsetIntervalを起動している。(重複しない)setCount( time + 1
削除ボタンを設置したToDoリストやテーブルでボタンを押しても再描画されないときの解決法。 クラス型コンポーネントの場合 削除に関係する部分のコードです。 class TableList extends Component { constructor(props) { super(props); this.state = { items: [], } handleDelete(id, index) { const data = { id: id }; axios .delete("http://localhost:5000/api/mydata", { data: data }) .then(response => { console.info(response.data.message); this.state.items.splice(index, 1); this.setState(
日常的にVueを使用している開発者が、Reactはどうなのだろうと思い、ReactとVueで全く同じアプリを作成した時のそれぞれの工程を比較して分かった相違点を紹介します。 I created the exact same app in React and Vue. Here are the differences. 下記は各ポイントを意訳したものです。 ※当ブログでの翻訳記事は、元サイト様にライセンスを得て翻訳しています。 隣の家の芝生は青く見える VueとReactで作成したアプリの見た目を比較 VueとReactはデータをどのように変更させるか アイテムの新規作成 アイテムの削除 イベントリスナーを渡す 子コンポーネントにデータを渡す 親コンポーネントにデータを戻す 終わりに 隣の家の芝生は青く見える 私は現在の職場でVueを使用しており、Vueがどのように機能するかかなり理解してい
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く