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

السؤال

نشر

أحاول استيراد صورة في Next.js ولكنها تظهر تالفة، ولا أفهم السبب. لدي المسار الصحيح للصورة ولكنها تظهر تالفة، وعند وضع المسار مباشرة في src='../pathimagepath/image.svg' يعمل بشكل جيد، ولكن عندما أقوم بتمريره باستخدام استيراد، لا يعمل.

هذا هو الكود الخاص بي:

"use client";
import React, { useState } from 'react';
import Logo from '../assets/Logo.svg';
import hamburgerBtn from '../assets/hamburgerBtn';
import '../app/globals.css';

function Navbar() {
    const [toggle, setToggle] = useState(false);
    const handleClick = () => setToggle(!toggle);

    return (
        <div className='w-full h-[80px] bg-white'>
            <div className="2xl:max-w-[1400px] 2xl:px-[0] xl:max-w-[1180px] lg:max-w-[924px] md:max-w-[668px] sm:max-w-[540px] max-w-[460px] md:px-[0px] sm:px-[40px] px-[40px] m-auto w-full h-full flex justify-between items-center">
                <img src={Logo} className='sm:h-[40px] h-[30px]' />
                <div className="hidden md:flex items-center">
                    <ul className='flex gap-6'>
                        <li>Home</li>
                        <li>About</li>
                        <li>Contact</li>
                    </ul>
                </div>

                <div className='md:hidden' onClick={handleClick}>
                    <img className="sm:h-[25px] h-[20px]" src={hamburgerBtn} />
                </div>
            </div>
        </div>
    )
}

export default Navbar;

حاولت استيراد الصورة في مكون Logo.jsx ولكن لا تعمل، وأنا أحتاج استيراد كل شيء ككائن لأنني بحاجة إلى عمل toggle بين hamburgerBtn و closeBtn.

Recommended Posts

  • 0
نشر

مرحبًا!

إذا كنت تواجه مشكلة في استيراد الصور في Next.js وتظهر الصور تالفة، فإليك بعض الخطوات التي قد تساعدك في حل المشكلة:

الحلول المقترحة

تأكد من استيراد الصور بشكل صحيح: تأكد من أنك تستورد الصور بشكل صحيح. يجب أن يكون المسار إلى الصورة صحيحًا وتأكد من وجود الصورة في ذلك المسار. بالنسبة للملفات SVG، تأكد من أن لديك امتداد .svg في نهاية المسار.

import Logo from '../assets/Logo.svg';
import hamburgerBtn from '../assets/hamburgerBtn.svg';

استخدم مكون Image من next/image: من الأفضل استخدام مكون Image من Next.js لتحميل الصور، حيث يوفر تحسينات في الأداء وتوافق أفضل.

import Image from 'next/image';
import Logo from '../assets/Logo.svg';
import hamburgerBtn from '../assets/hamburgerBtn.svg';

function Navbar() {
    const [toggle, setToggle] = useState(false);
    const handleClick = () => setToggle(!toggle);

    return (
        <div className='w-full h-[80px] bg-white'>
            <div className="2xl:max-w-[1400px] 2xl:px-[0] xl:max-w-[1180px] lg:max-w-[924px] md:max-w-[668px] sm:max-w-[540px] max-w-[460px] md:px-[0px] sm:px-[40px] px-[40px] m-auto w-full h-full flex justify-between items-center">
                <Image src={Logo} alt="Logo" className='sm:h-[40px] h-[30px]' />
                <div className="hidden md:flex items-center">
                    <ul className='flex gap-6'>
                        <li>Home</li>
                        <li>About</li>
                        <li>Contact</li>
                    </ul>
                </div>

                <div className='md:hidden' onClick={handleClick}>
                    <Image src={hamburgerBtn} alt="Hamburger Button" className="sm:h-[25px] h-[20px]" />
                </div>
            </div>
        </div>
    );
}

export default Navbar;

تحقق من إعدادات Webpack في next.config.js: تأكد من إعدادات Webpack لتحميل الصور. يمكنك إضافة إعدادات لتحميل الصور إذا لزم الأمر.

// next.config.js
module.exports = {
  images: {
    domains: ['example.com'], // أضف النطاقات التي يمكن تحميل الصور منها
  },
};

تحقق من وجود الصورة: تأكد من أن الصورة موجودة في المسار الصحيح الذي تستورده منه. تحقق من المسارات ونوع الملفات.

إذا كنت لا تزال تواجه مشاكل بعد هذه الخطوات، حاول التحقق من سجل الأخطاء في وحدة التحكم أو أدوات المطورين في المتصفح، أو تحقق من الوثائق الرسمية لـ Next.js.

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...