# アイコン

Webアプリを作る上でアイコンはかかせません。アイコンを表示するライブラリがいくつかあるのですが、今回は`react-icons`というライブラリを使用します。

`react-icons`をインストールしましょう。

```bash
npm install react-icons
```

使用したいアイコンは、以下サイトにて探すことができます。

{% embed url="<https://react-icons.github.io/react-icons/>" %}

今回はハートのアイコンを使います。

使用したいアイコンがあったら、クリックするとコードの記述方法が確認できます。

`components`配下に`Like.tsx`を作成しましょう。

その中に、以下のように記述します。

{% code title="Like.tsx◎" %}

```
import { FcLike } from "react-icons/fc";

export const Like = () => {
  return <FcLike />;
};

```

{% endcode %}

こちらのコンポーネントを`App.tsx`にて呼び出しましょう。

<pre class="language-tsx" data-title="App.tsx◎"><code class="lang-tsx">...
import { PrimaryButton } from "./components/Button";
<strong>import { Like } from "./components/Likes";
</strong>...
      &#x3C;PrimaryButton>button2&#x3C;/PrimaryButton>
<strong>      &#x3C;div>
</strong><strong>        &#x3C;Like />
</strong><strong>      &#x3C;/div>
</strong>...
</code></pre>

以下のように表示されるかと思います。

<figure><img src="https://1869761657-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcUBbYqol4PMzZJggiMqV%2Fuploads%2FoAwMHheNmEkdKLs7glqD%2F202312071325.png?alt=media&#x26;token=4587b243-6003-4bde-b4ea-ed9284b67430" alt=""><figcaption></figcaption></figure>

次にこのiconをクリックした際に、薄い色のハートになるようにします。

`isLiked`というstateを定義しましょう。そして、`FcLike`をクリックした際に、`isLiked`を`false`にしましょう。

<pre class="language-tsx" data-title="Like.tsx◎"><code class="lang-tsx">import { useState } from "react";
import { FcLike } from "react-icons/fc";

export const Like = () => {
<strong>  const [isLiked, setIsLiked] = useState(false);
</strong><strong>  return &#x3C;FcLike onClick={() => setIsLiked(false)} />;
</strong>};
</code></pre>

そして、`isLiked`が`false`の場合は、`FcLikePlaceholder`というアイコンを表示し、そのアイコンをクリックした際には`isLiked`を`true`としましょう。ちなみに、以下のように条件分岐にて`return`するComponentを変更するやり方も一般的です。

<pre class="language-tsx" data-title="Like.tsx◎"><code class="lang-tsx">import { useState } from "react";
import { FcLike } from "react-icons/fc";
import { FcLikePlaceholder } from "react-icons/fc";

export const Like = () => {
  const [isLiked, setIsLiked] = useState(false);
<strong>  if (isLiked) return &#x3C;FcLike onClick={() => setIsLiked(false)} />;
</strong><strong>  return &#x3C;FcLikePlaceholder onClick={() => setIsLiked(true)} />;
</strong>};

</code></pre>

上記にてハートのアイコンをクリックすると、アイコンが変化するかと思います。
