Ricerca…


introduzione

Puntelli o proprietà sono dati che vengono passati ai componenti figlio in un'applicazione React. I componenti di Reazione rendono gli elementi dell'interfaccia utente in base ai loro oggetti di scena e al loro stato interno. Gli oggetti di scena che un componente prende (e usa) definisce come può essere controllato dall'esterno.

Cosa sono gli oggetti di scena?

Gli oggetti vengono utilizzati per trasferire i dati dal componente principale a quello secondario. Gli oggetti sono di sola lettura. Il componente figlio può ottenere solo gli oggetti di scena passati dal genitore usando this.props.keyName . Usando oggetti di scena si può rendere il suo componente riutilizzabile.

Uso di oggetti di scena

Una volta completata l'installazione. Copia il codice qui sotto per index.android.js o per index.ios.js per usare gli oggetti di scena.

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);

Usando oggetti di scena si può rendere generico il suo componente. Ad esempio, hai un componente Button. Puoi passare diversi oggetti di scena a quel componente, in modo che uno possa posizionare quel pulsante ovunque nella sua vista.

source: Props-React Native

PropTypes

Il pacchetto prop-types consente di aggiungere il controllo del tipo di runtime al componente per garantire che i tipi di oggetti di scena passati al componente siano corretti. Ad esempio, se non si passa un name o isYummy prop al componente sottostante, si genera un errore nella modalità di sviluppo. Nella modalità di produzione i controlli del tipo di puntello non vengono eseguiti. Definire propTypes può rendere il tuo componente più leggibile e mantenibile.

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 multipli

Puoi anche avere più propTypes per un oggetto di scena. Ad esempio, gli oggetti di scena che sto prendendo possono anche essere un oggetto, posso scrivere come.

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

Puntelli per bambini

C'è anche un oggetto speciale chiamato children , che non è passato in modo simile

<Recipe children={something}/>

Invece, dovresti farlo

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

quindi puoi farlo nel rendering della ricetta:

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

Avrai un componente <Text> nella tua Recipe dice Hello React Native , un bel ronzio?

E il propType dei bambini è

children: PropTypes.node

Puntelli predefiniti

defaultProps ti consente di impostare valori di prop default per il tuo componente. Nell'esempio seguente se non si passano i puntelli del nome, verrà visualizzato John altrimenti verrà visualizzato il valore passato

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow