عند استخدام React، يُفضل عدم تعديل الـ props
مباشرةً في داخل الـ constructor. على الرغم من أن JavaScript يسمح بذلك، إلا أن هذه العملية يمكن أن تؤدي إلى صعوبات في فهم وصيانة الشيفرة في المستقبل.
بدلاً من ذلك، يمكنك إجراء أي تحويلات على الـ props
داخل الـ constructor واستخدام القيمة المعدلة لاحقًا في داخل الـ component. على سبيل المثال:
javascriptexport default class BookingForm extends React.Component {
constructor(props) {
super(props);
// Re-format props here
this.formattedProps = /* تحويل الـ props هنا */;
}
render() {
// Use this.formattedProps here
}
}
هذا النهج يجعل الشيفرة أكثر وضوحًا ويسهل فهمها لاحقًا.
المزيد من المعلومات
عندما تقوم بتعديل الـ props
داخل الـ constructor في React، يمكن أن يسبب ذلك بعض المشاكل في فهم الشيفرة وصيانتها، لأنه من المفترض أن تكون قيم الـ props
ثابتة وغير قابلة للتعديل داخل الـ component.
بدلاً من ذلك، يُفضل إجراء أي تحويلات أو تعديلات على الـ props
خارج الـ component نفسه، ومن ثم استخدام القيم المعدلة داخل الـ component. وهذا يمكن أن يتم عن طريق إضافة دوال تقوم بالتحويلات في الـ parent component وإرسال القيم المعدلة كـ props
إلى الـ child component.
على سبيل المثال، إذا كنت تحتاج إلى تحويل قيمة معينة من الـ props
، يمكنك فعل ذلك في الـ parent component وإرسال القيمة المعدلة كـ props
إلى الـ child component:
javascript// في الـ parent component
export default class ParentComponent extends React.Component {
constructor(props) {
super(props);
this.state = {
formattedValue: this.formatValue(this.props.value),
};
}
formatValue(value) {
// قم بتحويل القيمة هنا
return /* القيمة المعدلة */;
}
render() {
return (
<ChildComponent formattedValue={this.state.formattedValue} />
);
}
}
// في الـ child component
export default class ChildComponent extends React.Component {
render() {
// استخدم القيمة المعدلة هنا
return <div>{this.props.formattedValue}div>;
}
}
باستخدام هذا النهج، يمكنك تجنب التعديل المباشر على الـ props
داخل الـ component وجعل الشيفرة أكثر وضوحًا وسهولة في الصيانة.