ಮಾರ್ಗದರ್ಶಿಗಳು · 01

ಮೌಲ್ಯಗಳು ಮತ್ತು style

ಕಾಂಪೊನೆಂಟ್‌ನಲ್ಲಿ ಮೌಲ್ಯ ಇಟ್ಟುಕೊಳ್ಳಿ, calc() ನಿಂದ ಔಟ್‌ಪುಟ್ ಪಡೆಯಿರಿ, ಮತ್ತು CSS ವೇರಿಯಬಲ್ ಎಲ್ಲಿ ಬರೆಯಬೇಕೆಂದು ಆರಿಸಿ.

ಮೌಲ್ಯ ಇಟ್ಟುಕೊಳ್ಳುವುದು

useAnimatedValue(initial) ಕಾಂಪೊನೆಂಟ್‌ಗೆ ಸೇರಿದ Value ರಚಿಸುತ್ತದೆ. ಸಂಖ್ಯೆಯನ್ನು, ಅಥವಾ ಫೀಲ್ಡ್‌ಗಳು ಪ್ರತ್ಯೇಕ ಮೌಲ್ಯಗಳಾಗಿರುವ { x: 0, opacity: 1 } ನಂತಹ record ಬಳಸಿ.

ಸಾಮಾನ್ಯ style ನಲ್ಲಿ ಹುಕ್ ಮೌಲ್ಯ var(--kkwa-…, initial) ಟೋಕನ್. ನವೀಕರಣಗಳು ಅದನ್ನು ಬಳಸುವ ಎಲಿಮೆಂಟ್‌ಗಳ ಮೇಲೆ ಆ ವೇರಿಯಬಲ್ ಬರೆಯುತ್ತವೆ; React ರೆಂಡರ್ ಆಗುವುದಿಲ್ಲ.

ಉದಾಹರಣೆ ಸಿದ್ಧವಾಗುತ್ತಿದೆ…

calc() ನಿಂದ ಪಡೆಯುವುದು

easing ಇಲ್ಲದ interpolation ಮತ್ತು ಸ್ಥಿರಾಂಕದೊಂದಿಗೆ add, subtract, multiply ಅಥವಾ divide ಅದೇ ವೇರಿಯಬಲ್‌ನ ನಿಖರ calc() ಅಭಿವ್ಯಕ್ತಿಗಳಾಗುತ್ತವೆ. ಬ್ರೌಸರ್ ಅವನ್ನು ಲೆಕ್ಕಹಾಕುತ್ತದೆ; ಪ್ರತಿ ಫ್ರೇಮ್‌ಗೆ ಅವುಗಳಿಗಾಗಿ JavaScript ನಡೆಯುವುದಿಲ್ಲ.

Slide.jsx
const progress = useAnimatedValue(0);

// A linear interpolation of a hook value is a calc() of the same CSS variable.
const x = progress.interpolate({ inputRange: [0, 1], outputRange: ['0px', '180px'] });
const half = multiply(progress, 0.5);

<div style={{ opacity: half, transform: `translateX(${x})` }} />;

ಉದಾಹರಣೆ ಸಿದ್ಧವಾಗುತ್ತಿದೆ…

ಬಣ್ಣಗಳು ಮತ್ತು ಕಸ್ಟಮ್ ಲೆಕ್ಕಾಚಾರಗಳು

ಬಣ್ಣಗಳು, easing ಇರುವ interpolation, modulo, diffClamp ಮತ್ತು AnimatedComputed ಅನ್ನು calc() ಆಗಿ ಬರೆಯಲಾಗದು. useAnimatedCSS(node) ಅವುಗಳಿಗೆ JavaScript ನವೀಕರಿಸುವ ಸ್ವಂತ CSS ವೇರಿಯಬಲ್ ಅನ್ನು, ಅದೇ ಕಾಂಪೊನೆಂಟ್ ಜೀವಿತಾವಧಿಯೊಂದಿಗೆ, ಕೊಡುತ್ತದೆ.

ಅಂತಹ node ಅನ್ನು ನೇರವಾಗಿ style ನಲ್ಲಿ ಬಳಸಿದರೆ ದೋಷ ಎಸೆಯುತ್ತದೆ, ಹೀಗಾಗಿ ವೆಚ್ಚ ಎಂದಿಗೂ ಮರೆಯಾಗುವುದಿಲ್ಲ.

Glow.jsx
const progress = useAnimatedValue(0);

// Colors and eased curves are not calc() expressions: give them their own CSS value.
const color = useAnimatedCSS(
  progress.interpolate({ inputRange: [0, 1], outputRange: ['#3d3bf3', '#22b8f0'] }),
);

<div style={{ background: color }} />;

ಪಾಕವಿಧಾನವನ್ನು ಹುಕ್‌ಗೆ ಒಪ್ಪಿಸಿ

useAnimated(initial, factory, deps) ಮೌಲ್ಯ ಮತ್ತು factory ಯಲ್ಲಿ synchronous ಆಗಿ ಘೋಷಿಸಿದ ಪ್ರತಿ ಕಂಟ್ರೋಲರ್ ಅನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. ಮೌಂಟ್‌ನಲ್ಲಿ ಆರಂಭ, ಅವಲಂಬನೆ ಬದಲಾದಾಗ ಮರುಆರಂಭ, ಅನ್‌ಮೌಂಟ್‌ನಲ್ಲಿ ನಿಲುಗಡೆ.

ಈವೆಂಟ್ ಆಧಾರಿತ ಪ್ಲೇಬ್ಯಾಕ್‌ಗಾಗಿ { autoStart: false } ಕೊಡಿ, ನಂತರ ಹಿಂತಿರುಗಿದ ಮೌಲ್ಯದ ಮೇಲೆ start(), stop() ಅಥವಾ reset() ಕಾಲ್ ಮಾಡಿ.

Intro.jsx
const intro = useAnimated(
  { opacity: 0, y: 24 },
  (value) => {
    parallel([
      timing(value.opacity, { toValue: 1, duration: 400 }),
      spring(value.y, { toValue: 0, stiffness: 220, damping: 20 }),
    ]);
  },
  [],
);

<section style={{ opacity: intro.opacity, transform: `translateY(calc(${intro.y} * 1px))` }} />;

ಅನೇಕ ಎಲಿಮೆಂಟ್‌ಗಳಿಗೆ ಒಮ್ಮೆ ಬರೆಯಿರಿ

ಡೀಫಾಲ್ಟ್ ಆಗಿ, inline style ನಲ್ಲಿ ಮೌಲ್ಯ ಬಳಸುವ ಪ್ರತಿ ಎಲಿಮೆಂಟ್ ವೇರಿಯಬಲ್ ಪಡೆಯುತ್ತದೆ. scope ನೊಂದಿಗೆ ವೇರಿಯಬಲ್ ಒಂದು ಕಂಟೇನರ್ ಮೇಲೆ ಒಮ್ಮೆ ಬರೆದು ಅದರ ಮಕ್ಕಳಿಗೆ ಆನುವಂಶಿಕವಾಗಿ ಹೋಗುತ್ತದೆ: ನೂರಾರು ಎಲಿಮೆಂಟ್‌ಗಳಿಗೆ ಸರಿಯಾದ ಆಯ್ಕೆ.

AnimatedProvider scope={ref} ತನ್ನ ಕೆಳಗಿನ ಪ್ರತಿ ಹುಕ್ ಮೌಲ್ಯಕ್ಕೆ ಡೀಫಾಲ್ಟ್ scope ಹೊಂದಿಸುತ್ತದೆ.

Field.jsx
const field = useRef(null);

// Written once on the field; every child that uses the value inherits it.
const wave = useAnimatedValue(0, { scope: field });

<div ref={field}>
  {items.map((item) => (
    <i key={item} style={{ transform: `rotate(calc(${wave} * 1turn))` }} />
  ))}
</div>;

JavaScript ನಲ್ಲಿ ಮೌಲ್ಯಗಳನ್ನು ಓದುವುದು

getValue() React ಅನ್ನು ಸಬ್‌ಸ್ಕ್ರೈಬ್ ಮಾಡದೆ ಸ್ನ್ಯಾಪ್‌ಶಾಟ್ ಹಿಂತಿರುಗಿಸುತ್ತದೆ. useAnimatedListener(node, fn) ಪ್ರತಿ ಬದಲಾವಣೆಯಲ್ಲೂ ನಿಮ್ಮನ್ನು ಕಾಲ್ ಮಾಡಿ ಅನ್‌ಮೌಂಟ್‌ನಲ್ಲಿ listener ತೆಗೆಯುತ್ತದೆ. ರೆಂಡರಿಂಗ್‌ಗೆ ಅಲ್ಲ, canvas ಚಿತ್ರಣ ಅಥವಾ ವಿಶ್ಲೇಷಣೆಗೆ ಬಳಸಿ.

ಹುಡುಕಿ

ದಸ್ತಾವೇಜಿನಲ್ಲಿ ಹುಡುಕಲು ಟೈಪ್ ಮಾಡಿ.