إذا كنت جديدًا في استخدام React Native أو React، فقد صادفت الكلمات State وprops. يعد فهم هذين الأمرين أمرًا ضروريًا لتطوير تطبيقات الهاتف المحمول الديناميكية والقابلة للتكيف. سنتعمق في الحالة والدعائم في مقالة المدونة هذه، ونفحص الاختلافات بينهما، ونتعلم كيفية التعامل بفعالية مع تدفق البيانات في تطبيق React Native الخاص بك.
الحالة عبارة عن كائن مضمن يسمح للمكونات بإنشاء بياناتها الخاصة وإدارتها. فهو يحتوي على معلومات قد تتغير خلال دورة حياة المكون. كلما تغيرت الحالة، يتم إعادة عرض المكون ليعكس تلك التغييرات.
الدعائم، وهي اختصار للخصائص، هي مكونات للقراءة فقط. وهي عبارة عن معلمات خارجية تم تمريرها إلى مكون، على غرار كيفية تمرير الوسائط إلى دالة.
ميزة | ولاية | الدعائم |
---|---|---|
التحولية | قابل للتغيير (يمكن أن يتغير بمرور الوقت) | غير قابل للتغيير (للقراءة فقط) |
نِطَاق | محلي للمكون | تم التمرير من المكونات الأصلية إلى المكونات الفرعية |
غاية | إدارة البيانات التي تتغير بمرور الوقت | تكوين المكونات مع البيانات الخارجية |
التحديثات | إعادة عرض المشغلات عند تحديثها | لا يؤدي إلى إعادة العرض عند التغيير في الأصل |
يعد فهم متى تستخدم الحالة ومتى تستخدم الدعائم أمرًا أساسيًا لإدارة تدفق البيانات في تطبيقك.
تضمن الإدارة الفعالة لتدفق البيانات أن يعمل تطبيقك بشكل يمكن التنبؤ به ويسهل تصحيح الأخطاء وصيانته.
يستخدم React Native تدفق بيانات أحادي الاتجاه. تنتقل البيانات من المكونات الأم إلى المكونات الفرعية من خلال الدعائم. وهذا يجعل تدفق البيانات أسهل في الفهم والتصحيح.
عندما تحتاج مكونات متعددة إلى الوصول إلى نفس قطعة البيانات، فمن الأفضل رفع الحالة إلى أقرب سلف مشترك. بهذه الطريقة، يمكن تمرير الحالة المشتركة عبر الخاصيات.
للسماح للمكونات الفرعية بالتواصل مع المكونات الأصلية، يمكنك تمرير الوظائف (عمليات الاسترجاعات) كدعائم. يمكن للمكون الفرعي بعد ذلك استدعاء هذه الوظيفة لإرسال البيانات مرة أخرى إلى الأصل.
دعونا نلقي نظرة على بعض أمثلة التعليمات البرمجية لتوضيح هذه المفاهيم.
المكون الأصلي (App.js):
import React from 'react'; import { View } from 'react-native'; import Greeting from './Greeting'; const App = () => { return (); }; export default App;
المكون التابع (Greeting.js):
import React from 'react'; import { Text } from 'react-native'; const Greeting = (props) => { returnHello {props.name} ; }; export default Greeting;
توضيح:
مكون العداد (Counter.js):
import React, { useState } from 'react'; import { View, Button, Text } from 'react-native'; const Counter = () => { const [count, setCount] = useState(0); return (); }; export default Counter; You clicked {count} times
توضيح:
المكون الأصلي (TemperatureConverter.js):
import React, { useState } from 'react'; import { View } from 'react-native'; import TemperatureInput from './TemperatureInput'; const toCelsius = (fahrenheit) => ((fahrenheit - 32) * 5) / 9; const toFahrenheit = (celsius) => (celsius * 9) / 5 32; const TemperatureConverter = () => { const [temperature, setTemperature] = useState(''); const [scale, setScale] = useState('c'); const handleCelsiusChange = (temp) => { setScale('c'); setTemperature(temp); }; const handleFahrenheitChange = (temp) => { setScale('f'); setTemperature(temp); }; const celsius = scale === 'f' ? toCelsius(parseFloat(temperature)) : temperature; const fahrenheit = scale === 'c' ? toFahrenheit(parseFloat(temperature)) : temperature; return (); }; export default TemperatureConverter;
المكون الفرعي (TemperatureInput.js):
import React from 'react'; import { TextInput, Text } from 'react-native'; const scaleNames = { c: 'Celsius', f: 'Fahrenheit', }; const TemperatureInput = ({ scale, temperature, onTemperatureChange }) => { return (Enter temperature in {scaleNames[scale]}: > ); }; export default TemperatureInput;
توضيح:
المكونات عديمة الحالة أسهل في الاختبار والتصحيح. استخدم الدعائم لتمرير البيانات إليهم.
استخدم الحالة فقط عند الضرورة. قد يؤدي وجود عدد كبير جدًا من المكونات ذات الحالة إلى زيادة صعوبة إدارة تطبيقك.
لا تقم أبدًا بتغيير الحالة بشكل مباشر. استخدم دائمًا setState أو وظيفة التحديث من useState.
استخدم PropTypes لتوثيق الأنواع المقصودة من الخصائص التي تم تمريرها إلى المكونات.
import PropTypes from 'prop-types'; Greeting.propTypes = { name: PropTypes.string.isRequired, };
بالنسبة للبيانات التي تحتاج إلى إمكانية الوصول إليها بواسطة العديد من المكونات على مستويات تداخل مختلفة، فكر في استخدام واجهة برمجة تطبيقات السياق.
// Incorrect this.state.count = this.state.count 1; // Correct this.setState({ count: this.state.count 1 });
يجب ألا تحاول المكونات الفرعية تعديل الدعائم أو الحالة الأصلية مباشرةً. استخدم عمليات الاسترجاعات.
يعد فهم الحالة والدعائم وإدارتها بشكل فعال أمرًا ضروريًا لأي مطور React Native. من خلال إتقان هذه المفاهيم، ستكون قادرًا على إنشاء تطبيقات ليست وظيفية فحسب، بل أيضًا نظيفة وفعالة وقابلة للصيانة.
يتذكر:
خذ الوقت الكافي لممارسة هذه المفاهيم في مشاريعك، وستلاحظ تحسنًا كبيرًا في سير عمل التطوير لديك.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3