Учебники

ReactJS — Реквизит Обзор

Основное различие между состоянием и реквизитом заключается в том, что реквизит является неизменным. Вот почему компонент контейнера должен определять состояние, которое может быть обновлено и изменено, в то время как дочерние компоненты должны только передавать данные из состояния с помощью реквизита.

Использование реквизита

Когда нам нужны неизменяемые данные в нашем компоненте, мы можем просто добавить реквизиты для функции responseDOM.render () в main.js и использовать их внутри нашего компонента.

App.jsx

import React from 'react';

class App extends React.Component {
   render() {
      return (
         <div>
            <h1>{this.props.headerProp}</h1>
            <h2>{this.props.contentProp}</h2>
         </div>
      );
   }
}
export default App;

main.js

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;

Это даст следующий результат.

Пример React Props

Реквизит по умолчанию

Вы также можете установить значения свойств по умолчанию непосредственно в конструкторе компонента, вместо того, чтобы добавлять его в элементactDom.render () .

App.jsx

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;

main.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.jsx';

ReactDOM.render(<App/>, document.getElementById('app'));

Выход такой же, как и раньше.

Пример React Props

Состояние и реквизит

В следующем примере показано, как объединить состояние и реквизиты в вашем приложении. Мы устанавливаем состояние в нашем родительском компоненте и передаем его по дереву компонентов с помощью реквизита . Внутри функции рендеринга мы устанавливаем headerProp и contentProp, используемые в дочерних компонентах.

App.jsx

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;

main.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.jsx';

ReactDOM.render(<App/>, document.getElementById('app'));

Результат снова будет таким же, как и в предыдущих двух примерах, единственное, что отличается, это источник наших данных, который теперь изначально исходит от государства . Когда мы хотим обновить его, нам просто нужно обновить состояние, и все дочерние компоненты будут обновлены. Подробнее об этом в главе «События».