DEV Community

Cover image for Enhance Your Next.js or React.js Application with Froala Editor
Rohitash Singh
Rohitash Singh

Posted on

Enhance Your Next.js or React.js Application with Froala Editor

In modern web development, rich text editors play a crucial role in providing users with a versatile and intuitive interface for content creation. Froala Editor is a powerful and feature-rich WYSIWYG editor that can be seamlessly integrated into Next.js or React.js applications, offering a comprehensive solution for editing text and media content. In this blog post, we will explore the steps to integrate Froala Editor into your Next.js or React.js application, along with some tips for customization and optimization.

Demo Image

1. Getting Started:
Before we begin integrating Froala Editor into our application, let's ensure that our Next.js or React.js project is set up and running. If you haven't already created a project, you can use tools like Create React App for React.js or create-next-app for Next.js to bootstrap your application.

2. Installing Froala Editor:
To install Froala Editor in your project, you can use npm or yarn. Run the following command in your terminal:

npm install react-froala-wysiwyg --save    
Enter fullscreen mode Exit fullscreen mode

or

yarn add react-froala-wysiwyg froala-editor
Enter fullscreen mode Exit fullscreen mode

This will install both the Froala Editor package and its React wrapper (react-froala-wysiwyg) in your project.

3. Install font-awesome

npm install font-awesome --save    
Enter fullscreen mode Exit fullscreen mode

4. Integrating Froala Editor:

import React, { useState } from 'react';
import FroalaEditor from 'react-froala-wysiwyg';

function MyEditor() {
  const [content, setContent] = useState('');

  return (
    <div>
      <FroalaEditor
        tag='textarea' 
        model={content} 
        onModelChange={setContent} 
      />
    </div>
  );
}

export default MyEditor;

Enter fullscreen mode Exit fullscreen mode

5. Customization:
Froala Editor provides a wide range of configuration options that allow you to customize its behavior, appearance, and functionality according to your requirements. You can pass a config object to the FroalaEditor component to specify these options.

<FroalaEditor 
  tag='textarea' 
  model={content} 
  onModelChange={setContent} 
  config={{
      toolbarInline: true,
      toolbarSticky: true,
      charCounterCount: false,
      placeholderText: 'Unveil your story...', 
      codeMirror: true,
      theme: 'dark',
  }}
/>
Enter fullscreen mode Exit fullscreen mode

full version of the code or component.

"use client";

import React, { useState, useEffect } from 'react';
import 'froala-editor/css/froala_editor.pkgd.min.css';
import 'froala-editor/css/froala_style.min.css';
import 'froala-editor/js/plugins.pkgd.min.js';
import '@fortawesome/fontawesome-free/css/all.min.css';
import FroalaEditor from 'react-froala-wysiwyg';
import { Navbar } from '@/components';

export default function EditorComponent() {
  const [title, setTitle] = useState('');
  const [content, setContent] = useState('');

  useEffect(() => {
  }, []);

  return (
    <>
      <Navbar />
      <div className="editor-container pt-5 mx-auto max-w-4xl">
        <div className="editor-title-input">
          <FroalaEditor 
            tag='textarea' 
            model={title} 
            onModelChange={setTitle} 
            config={{
              toolbarInline: true,
              toolbarSticky: true,
              charCounterCount: false,
              placeholderText: 'Title', 
              theme: 'dark',
              classes: "display-3 text-2xl bg-black",
            }}
          />
        </div>
        <div className="editor-content-input pt-2">
          <FroalaEditor 
            tag='textarea' 
            model={content} 
            onModelChange={setContent} 
            config={{
              toolbarInline: true,
              toolbarSticky: true,
              charCounterCount: false,
              placeholderText: 'Unveil your story...', 
              codeMirror: true,
              theme: 'dark',
            }}
          />
        </div>
      </div>
    </>
  );
}
Enter fullscreen mode Exit fullscreen mode

Integrating Froala Editor into your Next.js or React.js application can greatly enhance the content creation experience for your users. By following the steps outlined in this blog post, you can quickly and effectively integrate Froala Editor into your project, customize it to meet your specific requirements, and take advantage of its advanced features to create compelling and engaging content.

Happy Coding 🚀

Top comments (2)

Collapse
 
topdev0215 profile image
Alessandro Corradini

Have you tried this code in Next.js?
This code does not work correctly in next.js due to an SSR issue.

Collapse
 
rohitashsingh89 profile image
Rohitash Singh

It works in my case.

Image description