Iconify for Svelte function: iconExists

This tutorial is part of Iconify for Svelte functions tutorial.

Function iconExists() checks if icon data is available for rendering.

Usage

Function has the following parameter:

  • name, string. Icon name.

Function returns boolean value: true if icon is available, false if icon is not available.

Example

This example renders <slot /> while icon is being loaded, emulating behavior of React component. Due to bug in Svelte, third party components cannot use <slot />, so Svelte component behaves a bit different than other components.

<script>
   import Icon, { iconExists, loadIcons } from '@iconify/svelte';
   import { onDestroy } from 'svelte';

   // Icon to render, string
   export let icon;

   // Icon status and cleanup function
   let loaded = false;
   let cleanup = null;
   let update = 0;

   $:
{
       // Mention dummy variable to trigger re-running this code from loadIcons() callback
       update;

       // Get icon data
       loaded = iconExists(icon);

       // Cancel previous callback
       if (cleanup) {
           cleanup();
           cleanup = null;
       }

       // Load icon
       if (!loaded) {
           cleanup = loadIcons([icon], () => {
               // Trigger re-running of code above
               update ++;
           });
       }
   }

   // Cleanup
   onDestroy(() => {
       if (cleanup) {
           cleanup();
       }
   })
</script>

{#if loaded}
   <Icon icon=
{icon} />
{:else}
   <slot />
{/if}

This example uses iconExists() to show function, but for this purpose it is better to use getIcon(). See getIcon() documentation for better example.