Reactで開発してみた 〜色々気づいたことプチまとめ〜
はじめに
2ヶ月ほどReactを使って開発を行ったのですが
その中でも勉強になったことや、こんなミス一生したくないというものをアウトプットしていきたいと思います。
props 受け渡し
親コンポーネントから子コンポーネントへ
値を受け渡す際にpropsで渡しているのですが
その際に関数内でpropsで受け取り、
props.~~~で使用していたのですが
// 例
export default hoge = () => {
return (
<hogeChildren data="hogehoge" dataLayout="hogelayout"/>
)
}
const hogeChildren = (props) => (
<>
<div>{props.data}</div> // =>hogehoge
<div>{props.dataLayout}</div> // =>hogelayout
</>
)
受け取る際に ({recommed})とすると
propsでやらなくても済む
// 例
export default hoge = () => {
return (
<hogeChildren data="hogehoge" dataLayout="hogelayout"/>
)
}
const hogeChildren = ({ data, dataLayout }) => (
<>
<div>{data}</div> // =>hogehoge
<div>{dataLayout}</div> // =>hogelayout
</>
)
props書かなくていいのは個人的に楽
Custom Hooks
Custom Hooksとは
名前が ”use” で始まり、ほかのフックを呼び出せる JavaScript の関数のことです。(参照: React document 独自フックの作成)
今回は初回以外かつuseEffectで第二引数値が変更した時のみ処理を行う際に使用したのでそれを記します。
const fisrtFlgRef = useRef(false);
useEffect(() => {
if (fisrtFlgRef.current) {
document.title = `${count} 回クリックしたよー`;
} else {
fisrtFlgRef.current = true;
}
}, dependencyList);
フラグを用意し、初回は
こちらだと毎回useRefを使って生成しないといけないといけないので
const useEffectCustom = (func, dependencyList) => {
const fisrtFlgRef = useRef(false);
useEffect(() => {
if (fisrtFlgRef.current) {
func();
} else {
fisrtFlgRef.current = true;
}
}, dependencyList);
}
export default useEffectCustom;
import useEffectCustom from hogeUserEffectCustom.jsx
useEffectCustom(() => {
document.title = `${count} 回クリックしたよー`;
}, [count])
このようにrefから
もっと詳しくuseEffectでの初回レンダリングを走らせずの処理を知りたい方はこちらの記事を
useEffect 初回レンダリングで走るな!!!
お世話になりました
customhooksについてもっと知りたい方はドキュメントへ
独自フックの作成
UseEffect無限ループ
これは恥ずかしいミスですが共感できる方がいらっしゃるととても嬉しいです。
useEffectでの第二引数の指定を第一引数で変更する内容にすると無限ループにはまりました。
useEffect(() => {
count++
console.log(`${count}回clickされたよー`)
}, [count])
この例はおおげさですがこのような記述にしてしまい
すごい量のconsolelogがでてきました。
まとめ
実際に実装してみないと気づかないこととかって結構ありますよね。。
参照記事
Author And Source
この問題について(Reactで開発してみた 〜色々気づいたことプチまとめ〜), 我々は、より多くの情報をここで見つけました https://qiita.com/nakamo-03/items/bcfa63793df6d9ab26a3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .