---
title: State
localeTitle: حالة
---
# حالة
الدولة هي المكان الذي تأتي منه البيانات.
يجب أن نحاول دائمًا جعل ولايتنا بسيطة قدر الإمكان وتقليل عدد المكونات الحميدة. إذا كان لدينا ، على سبيل المثال ، عشرة مكونات تحتاج إلى بيانات من الحالة ، فيجب علينا إنشاء مكون حاوية واحد سيحافظ على الحالة لكلها.
الدولة هي في الأساس مثل كائن عالمي متاح في كل مكان في أحد المكونات.
مثال على مكون فئة جليل:
 `import React from 'react'; 
 
 class App extends React.Component { 
  constructor(props) { 
    super(props); 
 
    // We declare the state as shown below 
 
    this.state = { 
      x: "This is x from state", 
      y: "This is y from state" 
    } 
  } 
  render() { 
    return ( 
      
 
        
{this.state.x}
 
        {this.state.y}
 
       
    ); 
  } 
 } 
 export default App; 
` 
مثال آخر:
 `import React from 'react'; 
 
 class App extends React.Component { 
  constructor(props) { 
    super(props); 
 
    // We declare the state as shown below 
    this.state = { 
      x: "This is x from state", 
      y: "This is y from state" 
    } 
  } 
 
  render() { 
    let x1 = this.state.x; 
    let y1 = this.state.y; 
 
    return ( 
       
        
{x1}
 
        {y1}
 
       
    ); 
  } 
 } 
 export default App; 
` 
## تحديث الدولة
يمكنك تغيير البيانات المخزنة في حالة التطبيق الخاص بك باستخدام طريقة `setState` على المكون الخاص بك.
 `this.setState({ value: 1 }); 
` 
ضع في اعتبارك أن `setState` غير متزامن لذا يجب توخي الحذر عند استخدام الحالة الحالية لتعيين حالة جديدة. مثال جيد لهذا سيكون إذا كنت ترغب في زيادة قيمة في ولايتك.
#### الطريق الخطأ
 `this.setState({ value: this.state.value + 1 }); 
` 
يمكن أن يؤدي ذلك إلى سلوك غير متوقع في تطبيقك إذا كان الرمز أعلاه يُسمى عدة مرات في نفس دورة التحديث. لتجنب هذا يمكنك تمرير دالة رد اتصال محدث إلى `setState` بدلاً من كائن.
#### الطريق الصحيح
 `this.setState(prevState => ({ value: prevState.value + 1 })); 
` 
## تحديث الدولة
يمكنك تغيير البيانات المخزنة في حالة التطبيق الخاص بك باستخدام طريقة `setState` على المكون الخاص بك.
 `this.setState({value: 1}); 
` 
ضع في اعتبارك أن `setState` قد تكون غير متزامنة لذا يجب توخي الحذر عند استخدام الحالة الحالية لتعيين حالة جديدة. مثال جيد لهذا سيكون إذا كنت ترغب في زيادة قيمة في ولايتك.
##### الطريق الخطأ
 `this.setState({value: this.state.value + 1}); 
` 
يمكن أن يؤدي ذلك إلى سلوك غير متوقع في تطبيقك إذا كان الرمز أعلاه يُسمى عدة مرات في نفس دورة التحديث. لتجنب هذا يمكنك تمرير دالة رد اتصال محدث إلى `setState` بدلاً من كائن.
##### الطريق الصحيح
 `this.setState(prevState => ({value: prevState.value + 1})); 
` 
##### الطريق الأنظف
 `this.setState(({ value }) => ({ value: value + 1 })); 
` 
عندما تكون هناك حاجة لعدد محدود من الحقول في كائن الحالة ، يمكن استخدام تدمير الكائن لرمز أنظف.
### معلومات اكثر
*   [رد الفعل - الدولة ودورة الحياة](https://reactjs.org/docs/state-and-lifecycle.html)
*   [رد الفعل - رفع الدولة](https://reactjs.org/docs/lifting-state-up.html)
*   [رد الفعل الأصلية - حتى الدولة](https://facebook.github.io/react-native/docs/state.html)