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

السؤال

نشر

السلام عليكم 

عندي مشروع شغال فية بال REACT JS 

الفكرة المراد تطبيقها

قائمة باسماء الموسيقاء المراد تشغيلها عند الضغط على واحدة يتم التشغيل تم انشاء هذا 

ولكن اريد ادراج مسار الموسيقى الى src الخاص بالمشغل  عند الضغط على اي اسم موسيقى ليتم تشغيلها بدون عمل import   براس الصفحة ل مسار الموسيقى لجلبها من مجلد مع العلم ان جميع الموسيقى موجودة في مجلد بداخل src  

كيف يتم تشغيل الموسيقى بدون import لامتدادها بعمل امتداد الموجود فية ملف الموسيقى 

الرجاء الافادة ولكم الشكر

Recommended Posts

  • 0
نشر

السلام عليكم لدي حل ممتاز لك.

لتشغيل الموسيقى بدون import ،يمكنك استخدام طريقة useState.

الخطوات:

  •  قم بإنشاء متغير state جديد في App.js الخاص بك لربط مسار الموسيقى بالمشغل.
const [musicPath, setMusicPath] = useState("");
  • ثاني شيء قم بإنشاء دالة لتحميل مسار الموسيقى من الملف.
const loadMusicPath = () => {
  const musicFiles = fs.readdirSync("./src/music");
  setMusicPath(musicFiles[Math.floor(Math.random() * musicFiles.length)]);
};
  • بعد ذلك، قم بتشغيل دالة loadMusicPath عند تحميل الصفحة.
useEffect(() => {
  loadMusicPath();
}, []);
  • أخيرًا، قم بتعيين مسار الموسيقى إلى مشغل الموسيقى عند الضغط على اسم الموسيقى في القائمة.
const handleClick = (musicName) => {
  setMusicPath(`./src/music/${musicName}`);
};

الكود بالكامل :

import React, { useState, useEffect } from "react";
import { Audio } from "react-native";
import fs from "fs";

const App = () => {
  const [musicPath, setMusicPath] = useState("");

  const loadMusicPath = () => {
    const musicFiles = fs.readdirSync("./src/music");
    setMusicPath(musicFiles[Math.floor(Math.random() * musicFiles.length)]);
  };

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

  const handleClick = (musicName) => {
    setMusicPath(`./src/music/${musicName}`);
  };

  return (
    <div>
      <ul>
        {musicFiles.map((musicName) => (
          <li key={musicName} onClick={() => handleClick(musicName)}>
            {musicName}
          </li>
        ))}
      </ul>
      <Audio
        source={{ uri: musicPath }}
        controls
        onEnd={() => loadMusicPath()}
      />
    </div>
  );
};

export default App;

 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...