Dans Réagissent Natif, comment puis-je accéder à des méthodes d'un composant à partir d'un autre composant?

J'essaye d'accéder à une méthode de Réagir composant Natif à partir d'un autre composant. Il est passé à travers les accessoires. Malheureusement, il semble que les composants ne fournissent pas leurs méthodes publiquement. Comment puis-je obtenir l'accès à cette méthode?

Jetez un oeil à ce qui suit, vous verrez InsideView a cette.accessoires de jeu.myModal, qui est un ShowMyModal composant. Cependant, il n'a pas accès à l' .openModal() la méthode.

Dans Réagissent Natif, comment puis-je accéder à des méthodes d'un composant à partir d'un autre composant?

'use strict';

var React = require('react-native');
var {
  AppRegistry,
  ActionSheetIOS,
  StyleSheet,
  Text,
  View,
} = React;

var InsideView = React.createClass({
  makeItOpen: function() {
    debugger;
    this.props.myModal.openModal();
  },

  render: function() {
    return (
      <View>
        <Text onPress={() => this.makeItOpen()}>Click me!</Text>
      </View>
    );
  }
});

var ShowMyModal = React.createClass({
  getInitialState: function() {
    return {
      isModalOpen: false,
    }
  },

  openModal() {
    this.setState({isModalOpen: true});
  },

  closeModal() {
    this.setState({isModalOpen: false});
  },

  render: function() {
    return (
      <Text>isModalOpen = {String(this.state.isModalOpen)}</Text>
    );
  }
});

var AwesomeProject = React.createClass({
  getInitialState: function() {
    return {
      myModal: <ShowMyModal />,
    }
  },

  render: function() {
    return (
      <View style={{padding: 30}}>
        <InsideView myModal={this.state.myModal}/>
        {this.state.myModal}
      </View>
    );
  },
});

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

OriginalL'auteur Some Guy | 2015-08-13

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *