Поиск…


Вступление

Реквизиты или свойства - это данные, которые передаются дочерним компонентам в приложении React. Реагирующие компоненты отображают элементы пользовательского интерфейса на основе их реквизита и их внутреннего состояния. Реквизиты, которые компонент принимает (и использует), определяют, как его можно контролировать извне.

Что такое реквизит?

Реквизиты используются для передачи данных от родительского к дочернему компоненту. Опоры читаются только. Детский компонент может получить только реквизит, переданный от родителя, используя this.props.keyName . Используя реквизит, можно сделать его компонент повторно используемым.

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

После завершения настройки. Скопируйте код ниже в index.android.js или в файл index.ios.js чтобы использовать реквизиты.

import React, { Component } from 'react';
import { AppRegistry, Text, View } from 'react-native';

class Greeting extends Component {
  render() {
    return (
      <Text>Hello {this.props.name}!</Text>
    );
  }
}

class LotsOfGreetings extends Component {
  render() {
    return (
      <View style={{alignItems: 'center'}}>
        <Greeting name='Rexxar' />
        <Greeting name='Jaina' />
        <Greeting name='Valeera' />
      </View>
    );
  }
}

AppRegistry.registerComponent('LotsOfGreetings', () => LotsOfGreetings);

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

источник: реквизит

PropTypes

Пакет prop-types позволяет вам добавить проверку типа времени выполнения на ваш компонент, который гарантирует, что типы реквизита, переданные компоненту, верны. Например, если вы не передадите name или isYummy prop к компоненту ниже, это вызовет ошибку в режиме разработки. В режиме производства проверки типа prop не выполняются. Определение propTypes может сделать ваш компонент более читабельным и поддерживаемым.

import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { AppRegistry, Text, View } from 'react-native';

import styles from './styles.js';

class Recipe extends Component {
  static propTypes = {
    name: PropTypes.string.isRequired,
    isYummy: PropTypes.bool.isRequired
  }
  render() {
    return (
      <View style={styles.container}>
        <Text>{this.props.name}</Text>
        {this.props.isYummy ? <Text>THIS RECIPE IS YUMMY</Text> : null}
      </View>
    )
  }
}

AppRegistry.registerComponent('Recipe', () => Recipe);


// Using the component
<Recipe name="Pancakes" isYummy={true} />

Несколько PropTypes

Вы можете также иметь несколько propTypes для одного реквизита. Например, реквизит имени, который я принимаю, также может быть объектом, я могу написать его как.

static propTypes = {
  name: PropTypes.oneOfType([
      PropTypes.string,
      PropTypes.object
  ])
}

Детские реквизиты

Существует также специальный реквизит, называемый children , который не передается как

<Recipe children={something}/>

Вместо этого вы должны сделать это

<Recipe>
  <Text>Hello React Native</Text>
</Recipe>

то вы можете сделать это в рендере Рецепта:

return (
  <View style={styles.container}>
    {this.props.children}
    {this.props.isYummy ? <Text>THIS RECIPE IS YUMMY</Text> : null}
  </View>
)

У вас будет компонент <Text> в вашем Recipe говорящий Hello React Native , довольно крутой гул?

И propType детей

children: PropTypes.node

Посты по умолчанию

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

class Example extends Component {
  render() {
    return (
      <View>
        <Text>{this.props.name}</Text>
      </View>
    )
  }
}


Example.defaultProps = {
  name: 'John'
}


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow