useCallback/useMemo/React.memoをどこで使うか、イメージで頭に叩き込む
## はじめに
できるだけ文章量を減らして見た目とイメージで。
## useEffect内でpropで渡ってくる関数を呼ぶ際
`useCallback`と`useMemo`を使い関数が何度も呼ばれるのを防ぐ。
“`jsx
const Parent = () => {
// useCallbackを使わないとParentがレンダリングする度に
// aが新しく作られ、ChildのuseEffect内のfooも毎回実行されてしまう
const a = useCallback(() => {}, []); // 何かしらの関数
// 関数にはcallback、オブジェクトと配列にはuseMemoを使う
// (useMemoを使わないとレンダリング毎に参照が変わるため)
const b = useMemo(() => [1, 2, 3], []);
return ;
};
const Child = ({ a, b }) => {
useEffect(() => {
const options = {
こんにちは塚田と申します。
今回はWijmo(ウィジモ)を紹介します。
Wijmo(ウィジモ)はメシウスが販売するWebアプリケーション開発で使われるJavaScriptライブラリです。
データグリッド、チャート、ゲージ、入力、ナビゲーションなどの
Webページを作成する際に必要となる部品を提供するJavaScriptライブラリです。今回はその一部の**データグリッド**を紹介します。
※画像は公式HPのサンプルを載せています
URL:https://demo.mescius.jp/wijmo/demos/Grid/Overview/purejs
# Gridの表示
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3801327/de0de0fe-7464-11f5-7902-d75aa0030680.png)
つづいてサンプルコード↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/
個人的によく使うので残しておきます。:desktop:
## Javascript
### Fade In 関数
| 引数 | 型 | 説明 |
|:-:|:-:|:-:|
| element | HTMLElement | フェードインする要素 |
| display | String | 要素に適用する表示スタイル。デフォルトは”block” |
| duration | Number | アニメーションの時間をミリ秒で指定 |
“`javascript
const fadeInElement = (element, display, duration) => {
const startTime = performance.now();
element.style.display = display || “block”;
function animate(currentTime) {
const elapsedTime = currentTime – startTime;
const opacity = elapsedTime / durati
## 1. Fastify、AJAX とは
– FastifyはAPIサーバーの構築に非常に適した高性能なNode.jsフレームワークです
– AJAXとは、Asynchronous JavaScript and XMLの略称で、Web アプリケーションでデータを非同期的に転送する通信手法のことを指します
## 2. 内容:
静的HTMLファイルをFastifyを用いてホスティングします。さらにスクリプト内のロジックをAJAXを用いてバックエンドに移行することを実現できたので、その過程・内容についてまとめます。
題材はAtCoderの問題 [ABC053A](https://atcoder.jp/contests/abc053/tasks/abc053_a)を簡易なwebアプリにしたものです。
## 3. Fastify のインストール・実行・閲覧
Node.jsがインストールされていることを確認した上で、Fastifyをinstallします。
### インストール
“`
npm install fastify
“`
### 実行
“`
node server.js
“
# 初めに
命名規則って結構言語ごとによって決まりが違うので、久しぶりに使う言語とか初めて使う言語とかとにかく普段使ってない言語だと命名規則がわからなくなるんですよね。
なので、まとめちゃいました。
# 各プログラミング言語の一般的な命名規則
プログラミング言語ごとに異なる命名規則を守ることで、コードの可読性と一貫性を高めることができます。
## Python
– **変数名**:`my_variable`
– **説明**:Pythonではスネークケースが推奨され、単語はアンダースコアで区切る
– **関数名**:`def my_function():`
– **説明**:関数名もスネークケースで記述され、可読性が高まる
– **クラス名**:`class MyClass:`
– **説明**:クラス名はパスカルケースで、各単語の先頭を大文字にする
– **定数名**:`MY_CONSTANT = 10`
– **説明**:定数はすべて大文字で、アンダースコアで単語を区切る
– **ファイル名**:`my_script.py`
– **説明**:ファイル名
# はじめに
みなさん、こんにちは。**torihazi**です。
今日はVanillaJSでTodoリストを作ってみました。
ネットで色々調べても編集だったり削除とかだったりを実装している記事が
見当たらなかったのでそういった方のための助けになればと思い
書いてみました。
※タグにも記載ありますが、初心者です。
間違いが無いように最善を尽くしていますが、
もしあればコメント等でそっと指摘をいただけますと幸いです。
# どんなものができるか。
こんな感じのものです。
https://x.com/torihazi/status/1795577514620055928
# コード(結論だけ知りたい方へ)
“`html:index.html
#3 【React】ResizeObserverでDOM要素のサイズを監視する
# はじめに
DOM要素のサイズが変更されたことを検知して、そのサイズにあったコンポーネントの表示に変更したいといったことがあるかと思います。
ReactではuseRefを使用することでDOM要素にアクセスすることが可能ですが、変更があってもコンポーネントが再レンダリングされないためDOM要素のサイズ変更を検知することができません。
そういった場合には、ResizeObserverというWebAPIを使うことで実現することができます。
## サンプルコード
以下、サンプルコードになります。右端を選択してドラッグするとプレビューで動作を確認できます。
(プレビューをデフォルトで表示する方法がわかる方教えてください:bow_tone2:)
画面にDiv要素が表示されていて、リサイズするとdiv内に表示しているwidthの値が変更されるサンプルになります。
https://codesandbox.io/embed/d8jwdk?view=editor+%2B+preview&module=%2Fsrc%2FApp.tsx&fontsize=12&previewwindow=br
## 概要説明
MapLibre GL JSを使って地図上にGeoJsonファイルを読み込み町丁目ポリゴンを表示させてみました。この記事は[Mapbox GL JSを使って町丁目ポリゴンを表示してみる](https://qiita.com/Book-Ma/items/2cfc5bc68606bd6e2366)のMapLibre版です。
## 使用したもの
### MapLibre GL JS
オープンソースのJavaScript地図ライブラリです。
当初はMapbox GL JS v1.13.0のフォークという位置付けでしたが、現在は独自路線へシフトし、ベクトルタイルを中心としたWeb地図のエコシステムを担うようになっています。
Mapbox GL JSとほぼ同じようにコードを書くことができます。またMapLibre GL JSではアクセストークンが不要であるため導入しやすさといった点でメリットがあります。
https://maplibre.org/maplibre-gl-js/docs/
### OpenStreetMapのベクトルタイル
今回の背景地図として使用しました。
h
# ◾️ はじめに
Vue.jsを学習中のエンジニアです👩🏻💻
今回、Vueのライブラリを使用せずにカレンダーを作成中に発生したエラーについて記事を書こうと思います。カレンダーのライブラリを使用しない理由は、カレンダーを好みのデザインやカスタマイズを行う際に、ゼロから作成した方が操作しやすいと考えたからです。
# ◾️ データの渡し方
**前提**:
– 6×7の日曜日スタートのカレンダーを作成
– 当月が日曜から始まらない部分に前月を表示
– 当月最終日から42マス目までは次月を表示
### ◉ やりたいこと
**『カレンダーの月が変更されると、その月ごとに日付を取得し、日付を管理するコンポーネントで表示できるようにする』**
① TypeScriptファイルの`useYearMonthDate.ts`の**allDates**でカレンダーの日付を取得
“`useYearMonthDate.ts
import { computed, ref } from ‘vue’
export const useYearMonthDate = () => {
// exports
JavaScriptにおける高階関数とは?
高階関数はさまざまなプログラミング言語で使用することができ、
主に2つの役割があります。
高階関数の役割。
:::note info
1、引数として関数を受け取る、関数
2、戻り値に関数を指定する、関数
:::
また、一般的に高階関数はプログラムの柔軟性と簡潔性を向上させるために利用されます。
関数を受け取る関数?関数を指定する関数?
とは一体なんなのでしょうか?
1つずつわかりやすく噛み砕いて説明していきます。
## 目次:
– [高階関数 「関数を引数として受け取る」](#高階関数-関数を引数として受け取る)
– [高階関数 「戻り値に関数を指定する」](#高階関数-戻り値に関数を指定する)
## 高階関数 「関数を引数として受け取る」
関数は、値なので、変数に入れることができます。
#### 例: 変数に関数式を代入
“`js
let greet = function() {
console.log(“Hello”);
}
greet()
“`
こちらの例では、greetという変数の中に、関数
# 目次
この記事は2分ほどで読めます。
[1. 問題](#1-問題)
[2. 解説](#2-解説)
[3. 結局どちらを使えば良いか](#3-結局どちらを使えば良いか)
# 1. 問題
“`
// JavaScriptの場合
let hoge = 10;
console.log(++hoge);
console.log(hoge++);
“`
“`
// Javaの場合
int hoge = 10;
System.out.println(++hoge);
System.out.println(hoge++);
“`
Q: 上記コードを実行したときにどのように表示されるでしょうか?(補足:JavaScriptとJavaの実行結果は同じになります)
考え中・・・
A: 正解は以下のとおりとなります
“`
11
11
“`
# 2. 解説
– hoge++と++hogeの挙動の違いを一言で表すと「変動`前`の変数を返すか変動`後`の違いを表すか」です。
– ++hogeのように++を変数前につけた場合は
# はじめに
https://qiita.com/kohki_takatama/items/5f1c6f75e6bbf6553682
https://qiita.com/kohki_takatama/items/430640e13e3fa497df2e
先日から、JavaScriptのグローバルオブジェクトについて記事を書いてきました。
記事を書くたびにコメントから学びがあり、ありがたい限りです。
今回もコメントいただいた`this`と`Function(‘return this’)()`について
# `this` / `Function(‘return this’)()` のメリット
最初に、今回紹介するものを使うメリットを示します。
基本的には`globalThis`で良さそうなのですが、`globalThis`は比較的新しい機能のようで、レガシー(古い)環境では対応していない可能性が考えられます。
その点、`this` / `Function(‘return this’)()` はより古くから使用されているため、レガシーな環境を想定するならこちらを使うと良いようで
こんにちは、WEBエンジニアの堀井です。
今回は、GoogleChromeを利用している方は、一度は使ったことがあるであろうChrome拡張機能の作成方法について書いていきたいと思います。
## Chrome拡張機能とは
[Chromeウェブストア](https://chromewebstore.google.com/category/extensions)からインストールすることのできる、ブラウザ上で動作する拡張機能のことです。
主にGoogleChromeやEdgeで利用することができます。
有名なものだと、選択した文章を翻訳することができる「Google翻訳」や、ブラウザ上にある色のカラーコードを取得できる「ColorZilla」などがあります。
## 作り方
公式のドキュメントがありますので、こちらを参考にしました。
https://developer.chrome.com/docs/extensions?hl=ja
今回は、拡張機能をクリックすると運勢がわかるおみくじ拡張機能を作成します。
必要なファイルは以下になります。
*
# はじめに
フロントエンドを React で書いていて非同期関数内で実行される更新関数(set 関数)でハマったのでメモしておきます。
## 実際に起こったこと
以下のように外部 API からオブジェクトのデータを別々に取得して、それぞれのデータでオブジェクトを更新する処理を書いたとします[^1]。
API を叩いた結果を用いたそれぞれの更新関数 setHuman の引数は**関数ではなく、現在の値を利用した値で更新しています。**
“`javascript
import React, { useState } from “react”;
const sleep = async (sec) => new Promise((resolve) => setTimeout(resolve, sec));
const mockGetNameApi = async () => {
await sleep(100);
return “hoge”;
};
const mockGetAgeApi = async () => {
await sleep(500);
ret
皆さん、こんにちは。Qiitaのみなさまへ。
今回、私たちは喜んでお知らせいたします。永久無料のQRコード生成ウェブサイトが新たに登場しました!このシンプルで効率的なツールを利用することで、世界中のユーザーが簡単にQRコードを生成し、ダウンロードすることができます。
[ウェブサイトのURL] (https://qr.tehito.com)
![qr.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3801337/baac37ac-ef6f-750e-e993-0e35f0d46f77.png)
現代の急速なデジタル化された世界において、QRコードはビジネスや個人にとって欠かせないツールとなっています。小規模なビジネスオーナーやマーケター、情報を迅速かつ効率的に共有したい方々にとって、QRコードは便利な解決策を提供しています。しかし、信頼性の高い、使いやすいQRコード生成ツールを見つけることは難しいことです。
それが私たちのウェブサイトの役割です。私たちは、完全無料で誰でもアクセス可能なシンプ