react-native
Реквизит
Поиск…
Вступление
Реквизиты или свойства - это данные, которые передаются дочерним компонентам в приложении 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'
}