1
/
5

Reactプロジェクトのベストプラクティス☺️

こんにちは! 株式会社アルシエで教育に関するサポートをしている岸本です。

今回は「Reactプロジェクトのベストプラクティス」についてお伝えしていきます。

Reactプロジェクトのベストプラクティス

JSX ShortHand を使用する

ブール変数をpropsで渡す場合は、JSX短縮表現を使用するようにしています。

悪い

return (
<Navbar showTitle={true} />
);

良い

return(
<Navbar showTitle />
)

三項演算子の使用

条件分岐に基づいてユーザーの詳え細を表示します。

悪い

const { role } = user;

if(role === ADMIN) {
return <AdminUser />
}else{
return <NormalUser />
}

良い

const { role } = user;

return role === ADMIN ? <AdminUser /> : <NormalUser />

オブジェクト リテラルを活用する

オブジェクト リテラルは、コードを読みやすくするのに役立ちます。

このコードは、与えられた`user`オブジェクトから`role`プロパティを抽出し、その値に基づいて適切なコンポーネントを選択しています。

悪い

const {role} = user

switch(role){
case ADMIN:
return <AdminUser />
case EMPLOYEE:
return <EmployeeUser />
case USER:
return <NormalUser />
}

良い

const {role} = user

const components = {
ADMIN: AdminUser,
EMPLOYEE: EmployeeUser,
USER: NormalUser
};

const Component = components[role];

return <Componenent />;

フラグメントを使用する

Fragmentを使うように意識をしています。

これにより、コードがクリーンに保たれて仮想DOMの生成が1つ少なくなり、パフォーマンスにも有効です。

悪い

return (
<div>
<Component1 />
<Component2 />
<Component3 />
</div>
)

良い

return (
<>
<Component1 />
<Component2 />
<Component3 />
</>
)

オブジェクトの分割を使用する

ユーザーの詳細を表示する場合、オブジェクトの分割を活用してください。

悪い

return (
<>
<div> {user.name} </div>
<div> {user.age} </div>
<div> {user.profession} </div>
</>
)

良い

const { name, age, profession } = user;

return (
<>
<div> {name} </div>
<div> {age} </div>
<div> {profession} </div>
</>
)

JSX から JS コードを削除する

レンダリングや UI 機能の目的をまったく果たさない JS コードを JSX から移動します。

JSXからJSコードを削除すると、JSX内のコードが簡潔になり、JSコードの意味が明確になります。

悪い

return (
<ul>
{posts.map((post) => (
<li onClick={event => {
console.log(event.target, 'clicked!'); // <- THIS IS BAD
}} key={post.id}>{post.title}
</li>
))}
</ul>
);

良い

const onClickHandler = (event) => {
console.log(event.target, 'clicked!');
}

return (
<ul>
{posts.map((post) => (
<li onClick={onClickHandler} key={post.id}> {post.title} </li>
))}
</ul>
);

以上です!

ぜひ、Reactを使ってみてください。

株式会社アルシエ's job postings
3 Likes
3 Likes

Weekly ranking

Show other rankings
Invitation from 株式会社アルシエ
If this story triggered your interest, have a chat with the team?