react-native - 将 flatlist 组件键作为参数传递
问题描述
import {View,Text,StyleSheet,FlatList,TouchableOpacity,Dimensions,AsyncStorage} from 'react-native';
import {Font, LinearGradient} from "expo";
const data = [
{ key: 'Addition' }, { key: 'B' }, { key: 'C' },{ key: 'D'},
{ key: 'E' },{ key: 'F' }
];
const numColumns = 1;
export default class GScreen extends React.Component {
renderItem = ({ item, index }) => {
return (
<LinearGradient
colors={['#2c81af','#92ede8']}
style={styles.contcontainer}
>
<TouchableOpacity
onPress={(item) =>{this.props.navigation.navigate('AScreen', {content : 'Addition' });}}>
<Text style={styles.title}>{item.key}</Text>
</TouchableOpacity>
</LinearGradient>
);
};
render() {
return (
<FlatList
data={data}
style={styles.container}
renderItem={this.renderItem}
numColumns={numColumns}
/>
);
};
}
对于这个 flatlist 的每个组件,当我们导航到 AScreen 而不是“添加”(或任何单个值)时,我想将 {item.key} 作为参数传递。我该如何实现?
解决方案
问题不在于对象的传递,而在于您如何onPress
在您的TouchableOpacity
目前这就是你所拥有的:
<TouchableOpacity
onPress={(item) =>{this.props.navigation.navigate('AScreen', {content : 'Addition' });}}>
<Text style={styles.title}>{item.key}</Text>
</TouchableOpacity>
请注意,在您的onPress
函数中,函数内部的(item) => {...}
单词item
正在覆盖您拥有的值 for item
。这就是为什么你得到undefined
. 您需要做的就是item
从函数调用中删除该单词。
如果您将代码更改为以下内容,则它应该按预期传递值
<TouchableOpacity
onPress={() =>{this.props.navigation.navigate('AScreen', {content : item.key });}}>
<Text style={styles.title}>{item.key}</Text>
</TouchableOpacity>
请注意,onPress
现在是() => {...}
。这应该阻止值item
被覆盖
推荐阅读
- php - htaccess 单页条目不提供静态文件
- java - 查询参数的Java Spring resttemplate字符编码
- regex - 正则表达式 - 拆分字符串
- javascript - 如何动态地将视频字幕轨道设置为默认轨道
- excel - 删除 L 列中的所有空格并添加双管道(VBA Excel)
- swift - WKWebView 可以加载本地 HTML5 进行写作吗?
- react-native - react-native 项目的持续集成管道需要将哪些文件添加到版本控制中?
- python - 分配错误之前引用的 Python
- python - 使用 groupby() 绘制销售趋势
- android - 使用具有隐式意图的 android Content Provider 泄漏数据