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

السؤال

نشر

مرحبا 

عند توليد مشروع create-react-app أحصل على ملفات منهم App.css وهذا يوضح لنا أنه يمكننا استعمال تنسيقات من ملف خارجي لكن التنسيقات ستكون عامة للمشروع كاملا وقد سألت سابقا هنا وأجابني بعض الاخوة هنا بأنني أستطيع انشاء ملف css خاص فقط بمكون واحد وذلك عن طريق .module.css وسؤالي هنا هو هل يوجد طرق أحسن لاجراء التنسيقات في react أو هل يوجد مكتبات  خارجية تسهل هذا الأمر ?

Recommended Posts

  • 0
نشر

إذا أردت أن تستخدم تنسيقات خاصة مثلاً لكل مكون أو كل صفحة تقوم بعملها فيمكنك استخدام ( JSS ) حيث إنها أداة ستسهل عليك كتابة التنسيقات وأيضا عن طريق الجافاسكربت بحيث يكون كل ملف له تنسيقاته الخاصة وهذا مثال 
 

import React from "react";
import { render } from "react-dom";
import { createUseStyles, ThemeProvider, useTheme } from "react-jss";

// نقوم بإنشاء تنسيقات
const useStyles = createUseStyles({
  wrapper: {
    padding: 40,
    background: ({ theme }) => theme.background,
    textAlign: "left"
  },
  title: {
    font: {
      size: 40,
      weight: 900
    },
    color: ({ theme }) => theme.color
  },
  link: {
    color: ({ theme }) => theme.color, // نستخدم قيمة الثيم الذي تم تمريره 
    "&:hover": {
      opacity: 0.5
    }
  }
});

const Comp = () => {
  const theme = useTheme(); // نستخدم الثيم 
  const classes = useStyles({ theme }); // نقوم باستدعاء التنسيقات وتمرير الثيم لها لاستخدامها كما في الأعلى
  return (
    <div className={classes.wrapper}>
      <h1 className={classes.title}>Hello React-JSS!</h1>
      <a
        className={classes.link}
        href="http://cssinjs.org/react-jss"
        traget="_blank"
      >
        See docs
      </a>
    </div>
  );
};

const theme = {
  background: "#f7df1e",
  color: "#24292e"
};

const App = () => (
  <ThemeProvider theme={theme}> // نقوم بإنشاء تنسيقات عامة --- يمكنك أن تتجاهلها (تستخدم في حالة كان لديك تنسيقات عامة لمجموعة من المكونات )
    <Comp />
  </ThemeProvider>
);

render(<App />, document.getElementById("root"));

 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...