【问题标题】:FlatList onClick navigate to next screenFlatList onClick 导航到下一个屏幕
【发布时间】:2017-07-31 02:28:02
【问题描述】:

当在 react-native 中的 Flatlist 中单击一行时,如何使 Flatlist 导航到下一个屏幕?

已编辑:我在我的 JS 文件中发布了所有代码。

这是我的平面列表代码:

import React, { Component } from 'react';
import {
    StyleSheet,
    Text,
    View,
    FlatList,
    Button,
    TouchableOpacity,
    TouchableHighlight
} from 'react-native'

const Tasks = (props) => {
     const { navigate } = props.navigation;
     return (
      <View style={styles.container}>
        <FlatList
          data={[
            {key: 'Task 1'},
            {key: 'Task 2'},
            {key: 'Task 3'},
            {key: 'Task 4'},
            {key: 'Task 5'},
          ]}
          renderItem={({item}) => <TouchableHighlight onPress={() => this.goToNextScreen()}>
      <Text style={styles.item}>{item.key}</Text>}
</TouchableHighlight>}
        />
          <TouchableOpacity style={{ height: 50, marginTop: 5, marginLeft: 100, marginRight: 100 }}>
         <Button
              onPress={()=>navigate('Steps')}
              title="Steps"
              />  
              </TouchableOpacity>
      </View>
    );
  }


const styles = StyleSheet.create({
  container: {
   flex: 1,
   paddingTop: 22
  },
  item: {
    padding: 10,
    fontSize: 18,
    height: 44,
  },
})

Tasks.navigationOptions = {
    title: 'Task Order',
};

export default Tasks

【问题讨论】:

  • 这是不是完整代码!没有渲染()函数?什么是 props.navigation?
  • 它在 index.android.js 中
  • 即使在 index.android.js 中,如果没有渲染功能,这将无法工作!
  • render() { const { 导航 } = this.props;这是索引 sr 中的渲染
  • 对不起,我对原生反应很陌生

标签: react-native react-native-listview


【解决方案1】:

我有一个简单的例子:

//Tasks Component
const Tasks = (props) => {
     const { navigate } = props.navigation;
     //function to go to next screen
     goToNextScreen = () => {
         return navigate('Detail');
     }
     return (
      <View>
        <FlatList
          data={[
            {key: 'Task 1'},
            {key: 'Task 2'},
            {key: 'Task 3'},
            {key: 'Task 4'},
            {key: 'Task 5'},
          ]}
          renderItem={({item}) => {
              return(
                <TouchableHighlight onPress={() => this.goToNextScreen()}>
                     <Text >{item.key}</Text>
                </TouchableHighlight>
              )
            }
          }
        />
      </View>
    );
}

//example for detail screen
const Detail = (props) => {
    const { navigate } = props.navigation;
    return(
        <View><Text>Detail Screen</Text></View>
    );
}

//initial screen
const App = StackNavigator({
  Tasks: {screen: Tasks},
  Detail: {screen: Detail},
})

也许可以帮到你,谢谢:)

【讨论】:

  • 先生给我一个错误,说必须返回一个有效的反应元素(或空)
  • 为什么把 Button 放在 TouchableHighlight 的底部?你可以只使用TouchableHighlight,不需要Button了
  • 在回答您的问题之前,我先尝试了我的代码,并且我的设备正在运行,我认为您的代码还有另一个错误:)
  • 大声笑让它早点工作,然后重新加载应用程序。它给了我这样的 Rawtext "onpress=" 必须包含在显式文本中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-03
  • 1970-01-01
  • 1970-01-01
  • 2014-12-07
  • 2018-12-30
  • 2010-11-09
  • 1970-01-01
相关资源
最近更新 更多