web-dev-qa-db-ja.com

コンポーネントの小道具をFlatList renderItemに渡す方法

コンポーネントに小道具としての関数があり、この関数の小道具をFlastListのrenderItemの別のコンポーネントに渡す必要があります。どうやってするか?これが私のコードです。

import React, { Component } from 'react';
import { View } from 'native-base';
import PropTypes from 'prop-types';
import { FlatList } from 'react-native';
import AddPlayers from '../AddPlayers/AddPlayers';
import League from '../League/League';
export default class InviteLeagues extends Component {
  static propTypes = {
    invitedLeagues: PropTypes.Array,
    label: PropTypes.string.isRequired,
    InvitedLeaguesList: PropTypes.Array,
    onPress: PropTypes.func.isRequired
  };

  static defaultProps = {
    InvitedLeaguesList: [
      { name: 'Howdy', createdBy: '[email protected]', status: 'Join' },
      { name: 'Lorem', createdBy: '[email protected]', status: 'Join' }
    ]
  };

  renderLeague(item) {
    return <League invitedLeague={item} />;
  }

  render() {
    return (
      <View {...this.props}>
        <AddPlayers
          label={this.props.label}
          labelStyle={{ fontStyle: 'italic' }}
        />
        <FlatList
          numColumns={1}
          data={this.props.InvitedLeaguesList}
          renderItem={this.renderLeague}
        />
      </View>
    );
  }
}

次に、onPress(Function Prop)をLeagueコンポーネントに渡す必要があります

こうやってみました

 <FlatList
          numColumns={1}
          data={this.props.InvitedLeaguesList}
          renderItem={this.renderLeague}
          extraData={this.props}
        />

renderLeague(item) {
    return <League invitedLeague={item} onPress={this.props.onPress} />;
  }
6
m9m9m

callBack関数を作成しようとしていると思います。もしそうなら、次のようにしてください。

renderLeague(item) {
    return <League invitedLeague={item} onPress={this._callBack.bind(this)} />;
}


//callback function
_callBack(data) {
   // your code here...
}

コンポーネントからLeague

次のような関数を呼び出し、

this.props.onPress(datas);
1
Jebin Benny