• בלוג
  • עמוד 55
  • האם Panda CSS הוא הדבר הגדול הבא בעיצוב לריאקט?

האם Panda CSS הוא הדבר הגדול הבא בעיצוב לריאקט?

29/06/2023

פנדה הוא בהחלט כל מה שאפשר לדמיין כשחושבים על פריימוורק ל CSS in JS. היתרון הגדול שלו הוא התמיכה המלאה בקומפוננטות צד-שרת, כלומר בבניית כל הגדרות העיצוב בצד בתור קלאסים ושימוש אוטומטי בקלאסים אלה בתוך הקוד, בסגנון Tailwind CSS. אבל בניגוד לטיילווינד, פה יש לנו גם חיבור ל TypeScript כדי לקבל השלמה ואימות טיפוסים על כללי העיצוב ואינטגרציה טובה עם ריאקט כדי לייצר עיצובים מתוך קוד.

וכמו שאומרים קוד שווה יותר מאלף מילים, אז הנה דוגמה קטנה ל Panda בקומפוננטת ריאקט:

function App() {
  return (
    <div className={css({ background: 'red.400'})}>
      <div className={css({ fontSize: "2xl", fontWeight: 'bold' })}>Hello 🐼!</div>
    </div>
  )
}

אני משתמש בפונקציה css ומעביר את ערך החזרה שלה בתור className. באופן אוטומטי פנדה מייצר קלאס שיש לו את הגדרות העיצוב שכתבתי והפונקציה מחזירה את שם הקלאס. במידה והקומפוננטה תרונדר מצד שרת, אז ה HTML שיישלח ללקוח יכיל ממש את שמות הקלאסים שג'ונרטו וכך גולשים יכולים לראות את העמוד עם העיצוב גם בלי JavaScript.

ודוגמה שניה קצת יותר מתוחכמת-

function App() {
  const [clicked, setClicked] = useState(false);
  return (
    <div>
      <button
        className={css({
          color: {
            base: 'blue',
            _hover: 'green',
          },
          cursor: 'pointer',
          background: '#dadada',
          padding: '10px',
          borderRadius: '5px',
        })}
        onClick={() => setClicked(true)}
      >
        Click Here
      </button>
      <p className={css({
        color: clicked ? 'green' : 'red'
      })}>{clicked ? 'Passed' : 'Failed'}</p>
    </div>
  )
}

המפתח _hover מגדיר ערך עיצוב שיפעל כשהאלמנט נמצא ב hover, ואין בעיה בתוך האוביקטים של העיצוב לבדוק ערכים של משתני JavaScript.

כדי לשחק עם Panda תצטרכו קודם להוסיף אותו לפרויקט ריאקט שלכם. אלה ההוראות לפרויקט שבנוי ב Vite: https://panda-css.com/docs/getting-started/vite