m9m*_*m9m 3 react-native react-native-flatlist
我的组件中有一个函数作为道具,并且必须将此函数道具传递给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: 'email1@gamil.com', status: 'Join' },
{ name: 'Lorem', createdBy: 'email@gmail.com', 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>
);
}
}
Run Code Online (Sandbox Code Playgroud)
现在我必须将onPress(功能道具)传递给League组件
我尝试过这样
<FlatList
numColumns={1}
data={this.props.InvitedLeaguesList}
renderItem={this.renderLeague}
extraData={this.props}
/>
renderLeague(item) {
return <League invitedLeague={item} onPress={this.props.onPress} />;
}
Run Code Online (Sandbox Code Playgroud)
beh*_*eri 16
您可以将 props 作为参数传递给呈现平面列表项的函数,如下所示:
<FlatList
numColumns={1}
data={this.props.InvitedLeaguesList}
renderItem={(item) => this.renderLeague(item, this.props)}
/>
Run Code Online (Sandbox Code Playgroud)
你可以在renderLeague函数中使用这个参数:
renderLeague({item}, props) {
...
}
Run Code Online (Sandbox Code Playgroud)
props 变量包括 props 的所有参数,因为你可以this.props在另一个地方使用。
这样对我有用
<FlatList
numColumns={1}
data={this.props.InvitedLeaguesList}
renderItem={({ item }) => <League invitedLeague={item} onPress={this.props.onPress} />}
extraData={this.props}
/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1422 次 |
| 最近记录: |