how to load a template in unlayer-react-email-editor

3 min read 04-10-2024
how to load a template in unlayer-react-email-editor


Effortlessly Load Templates into your Unlayer React Email Editor

Creating stunning email designs can be a time-consuming process. Thankfully, the Unlayer React Email Editor empowers you to expedite development with its robust template loading functionality. This article will guide you through the steps of seamlessly integrating and loading templates into your Unlayer React Email Editor, allowing you to focus on refining your email designs and driving engagement.

Setting the Stage: Understanding the Scenario

Imagine you're building a React application that features an email editor for crafting beautiful marketing emails. Instead of starting from scratch each time, you want to leverage pre-designed templates to accelerate the design process. The Unlayer React Email Editor provides an elegant solution to this scenario.

Let's assume you have a basic React application set up and you've already integrated the Unlayer React Email Editor. The following code snippet represents the initial structure:

import React, { useState } from "react";
import { EmailEditor } from "unlayer-react-email-editor";

function App() {
  const [editorState, setEditorState] = useState({
    design: {
      // Initial design state (optional)
    },
  });

  return (
    <div>
      <EmailEditor 
        value={editorState}
        onChange={setEditorState}
      />
    </div>
  );
}

export default App;

The Power of Templates: Streamlining Your Workflow

Unlayer React Email Editor offers two primary methods for incorporating templates into your workflow:

  1. Static Template Loading: Directly embed a template within your code, allowing for effortless integration and rapid prototyping.

  2. Dynamic Template Loading: Fetch templates dynamically from an external source, such as an API or a database, providing flexibility and scalability.

1. Static Template Loading: Simple and Effective

To load a static template, simply provide the template content within the design property of your editorState. Let's illustrate with an example:

const template = {
  "design": {
    "elements": [
      {
        "type": "header",
        "content": "Welcome to our Newsletter!",
        "styles": {
          "fontSize": "24px",
          "fontWeight": "bold"
        }
      },
      {
        "type": "paragraph",
        "content": "Stay up-to-date with the latest news and offers..."
      }
    ]
  }
};

function App() {
  // ... (rest of your component code)

  return (
    <div>
      <EmailEditor
        value={template} // Loading template as initial state
        onChange={setEditorState}
      />
    </div>
  );
}

In this scenario, the template variable contains the HTML structure of your email template, which is directly loaded into the Unlayer editor. This method proves beneficial for basic scenarios where the template remains static and the editor is initialized with a predefined design.

2. Dynamic Template Loading: Adapting to Dynamic Needs

For situations where you need to load templates dynamically, such as from an API or a database, you can leverage the loadTemplate method of the Unlayer Editor. This method enables you to fetch template content asynchronously and update the editor's state with the received data.

// Example using a fetch API call
async function loadTemplateFromAPI(templateId) {
  const response = await fetch(`https://your-api.com/templates/${templateId}`);
  const template = await response.json();
  return template;
}

function App() {
  // ... (rest of your component code)

  const handleTemplateLoad = async () => {
    const template = await loadTemplateFromAPI("your-template-id");
    setEditorState(template);
  };

  return (
    <div>
      <EmailEditor
        value={editorState}
        onChange={setEditorState}
      />
      <button onClick={handleTemplateLoad}>Load Template</button>
    </div>
  );
}

This example demonstrates how to use the loadTemplate method to load a template from a hypothetical API. The handleTemplateLoad function retrieves the template data from the API, sets the editorState with the fetched template, and subsequently updates the editor.

Optimizing for User Experience

When loading templates dynamically, consider enhancing the user experience by providing visual feedback. This could include a loading indicator or a progress bar to indicate the status of template loading. Additionally, handling potential errors during the loading process is crucial for a robust application.

Conclusion

By leveraging the powerful template loading capabilities of Unlayer React Email Editor, you can significantly streamline your email design workflow. Whether you prefer static integration or dynamic fetching, Unlayer empowers you to build a robust and user-friendly email editor within your React application. This functionality allows you to focus on crafting compelling email content and achieving optimal marketing results.