English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
الفرق الرئيسي بين الحالة والخصائصpropsهي غير قابلة للتغيير. لذا يجب على مكونات المحول تعريف الحالة التي يمكن تحديثها وتغييرها، بينما يجب على المكونات الفرعية استخدام prop لتحويل البيانات من الحالة.
عندما نحتاج إلى استخدام بيانات غير قابلة للتغيير في المكون، يمكننا إضافة خصائص في دالة reactDOM.render() في main.js واستخدامها في المكون.
import React from 'react'; class App extends React.Component {}} render() { return ( <div> <h1>{this.props.headerProp}</h1> <h2>{this.props.contentProp}</h2> </div> ); } }
import React from 'react'; import ReactDOM from 'react-dom'; import App from './App.jsx'; ReactDOM.render(<App headerProp="Header from props..." contentProp="Content from props...">, document.getElementById('app')); export default App;
سيكون هذا النتيجة.
يمكنك أيضًا تعيين قيم الخصائص الافتراضية مباشرة في بناء المكون، بدلاً من إضافتها إلى عنصر reactDom.render().
import React from 'react'; class App extends React.Component { render() { return ( <div> <h1>{this.props.headerProp}</h1> <h2>{this.props.contentProp}</h2> </div> ); } } App.defaultProps = { headerProp: "Header from props...", contentProp: "Content from props..." } export default App;
import React from 'react'; import ReactDOM from 'react-dom'; import App from './App.jsx'; ReactDOM.render(<App/>, document.getElementById('app'));
الخروج كما كان من قبل.
السلسلة التالية تظهر كيفيةالحالةفي التطبيق، نقوم بالدمج والدعم. نضبط حالة في المكون الرئيسي ونستخدمpropsنقوم بتحويلها إلى شجرة المكونات. فيrenderفي داخل الدالة، نحن نضبطheaderPropوcontentPropفي المكونات الفرعية.
import React from 'react'; class App extends React.Component {}} constructor(props) { super(props); this.state = { header: "Header from props...", content: "Content from props..." } } render() { return ( <div> <Header headerProp={this.state.header}/> <Content contentProp={this.state.content}/> </div> ); } } class Header extends React.Component { render() { return ( <div> <h1>{this.props.headerProp}</h1> </div> ); } } class Content extends React.Component { render() { return ( <div> <h2>{this.props.contentProp}</h2> </div> ); } } export default App;
import React from 'react'; import ReactDOM from 'react-dom'; import App from './App.jsx'; ReactDOM.render(<App/>, document.getElementById('app'));
النتيجة ستكون مثل الأمثلة السابقتين مرة أخرى، ولكن الفرق الوحيد هو مصدر البيانات، الذي جاء في البداية منالحالةعندما نريد تحديثه، يكفي تحديث الحالة، وسينتج عن ذلك تحديث جميع المكونات الفرعية.