اذهب إلى المحتوى

السؤال

نشر

السلام عليكم.

إعتمدت على react-quill لإرسال بيانات إلى قاعدة البيانات كما يلي

"use client";
import React, { SetStateAction, useState } from 'react';
import dynamic from 'next/dynamic';
import 'react-quill/dist/quill.snow.css';
import { useTranslations } from 'next-intl';

const QuillEditor = dynamic(() => import('react-quill'), { ssr: false });

type DescriptionProps = {
  description: string,
  setDescription: React.Dispatch<React.SetStateAction<string>>
}

const Description = ({description, setDescription}: DescriptionProps) => {
  const t = useTranslations('Add Task')
  // const [description, setDescription] = useState<string>('');

  const quillModules = {
    toolbar: [
      [{ header: [1, 2, 3, false] }],
      ['bold', 'italic', 'underline', 'strike', 'blockquote'],
      [{ list: 'ordered' }, { list: 'bullet' }],
      ['link', 'image'],
      [{ align: [] }],
      [{ color: [] }],
      ['code-block'],
      ['clean'],
    ],
  };

  const quillFormats = [
    'header',
    'bold',
    'italic',
    'underline',
    'strike',
    'blockquote',
    'list',
    'bullet',
    'link',
    'image',
    'align',
    'color',
    'code-block',
  ];

  const handleEditorChange = (content: SetStateAction<string>) => {
    setDescription(content);
  };
  return (
    <div className=" bg-gradient-to-br from-white to-gray-100 dark:from-gray-800 dark:to-gray-900">
      <h2 className="text-gray-800 dark:text-gray-300 font-medium mb-2">
        {t('task_description')}
      </h2>
      <QuillEditor
        value={description}
        onChange={handleEditorChange}
        modules={quillModules}
        formats={quillFormats}
        className="w-full bg-gray-50 dark:bg-gray-800 border-gray-300 dark:border-gray-600 rounded-md focus:outline-none focus:ring-4 focus:ring-indigo-400 focus:border-indigo-500 transition-all text-gray-900 dark:text-gray-100 text-xl"
      />
    </div>
  );
};

export default Description;

المشكل الذي أواجهه هو أنه عند عرض البيانات لايتم عرضها كما أرسلتها (ul - ol ...) 

الكود

<p
                className="mb-6 text-gray-700 dark:text-gray-300 text-justify"
                dangerouslySetInnerHTML={{ __html: task.description }}
            >
                {/* {task.description} */}
            </p>

شكرا

Recommended Posts

  • 0
نشر

وعليكم السلام،

أولا : قم بإضافة ql-editor للعنصر الذي تعرض فيه البيانات هكذا :

<p
    className="mb-6 text-gray-700 dark:text-gray-300 text-justify ql-editor"
    dangerouslySetInnerHTML={{ __html: task.description }}
/>


ثانيا : تأكد من أن task.description يحتوي على HTML صالح وكامل , قم بطباعته في الكونسول و تحقق من النتيجة, هل يوجد أخطاء في وسوم ال html, إذا وجدتأخطاء فالمشكلة تكون ليست بالعرض و إنما بالحفظ

ثالثا :إذا استمرت  يمكنك أن ضيف تنسيقات بنفسك لتعرض المحتوى كما تريد , قم بإنشاء ملف css و ضع فيه التنسيقات التالية وعدلها كيف تشاء :

.ql-editor {
    line-height: 1.6;
    font-size: 1rem;
}

.ql-editor h1 {
    font-size: 2em;
    font-weight: bold;
}

.ql-editor h2 {
    font-size: 1.75em;
    font-weight: bold;
}

.ql-editor h3 {
    font-size: 1.5em;
    font-weight: bold;
}

.ql-editor ol,
.ql-editor ul {
    padding-left: 1.5rem;
    list-style-position: inside;
}

.ql-editor li {
    margin-bottom: 0.5rem;
}

.ql-editor blockquote {
    border-left: 4px solid #ccc;
    margin: 1.5em 0;
    padding-left: 1em;
    color: #555;
    font-style: italic;
}

.ql-editor a {
    color: #3490dc;
    text-decoration: underline;
}

.ql-editor .ql-align-center {
    text-align: center;
}

.ql-editor .ql-align-right {
    text-align: right;
}

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...