0

我正在使用RN版本0.59.9React Navigaton 3.11.1.

我想在我的视图上添加 onPress,所以我将它包装在 TouchableOpacity 中,但它对我不起作用。

我尝试在 React Navigation 之外使用它,它仍然可以工作,所以可能是这个库中的一个错误。

我试图为要添加 OnPress 的视图设置高度,但仍然无法正常工作

更新:有关你们的更多信息,有一些代码:

我有两个这样的屏幕:

class VuaTraiCayApp extends Component {
      render() {
        return <AppContainer />;
      }
    }

    const stack = createStackNavigator(
      {
        Home: {
          screen: HomeScreen
        },
        Detail: {
          screen: DetailScreen
        }
      },
      {
        defaultNavigationOptions: {
          headerTitle: "Trang chủ"
        }
      }
    );

    const AppContainer = createAppContainer(stack);


在 HomeScreen 中,我想在视图上添加 onPress,所以我将视图包裹在 TouchabeOpacity 中。它不起作用:

<TouchableOpacity 
      onPress={()=> {
        alert("Clicked");
      }}
    >
      <View 
        style={{
          width: 200,
          height: 500,
          backgroundColor: "pink"
        }} 
      />
    </TouchableOpacity>

但是如果我在堆栈外使用相同的代码。让我们看看我将这段代码移动到根目录而不在堆栈中。它完美地工作。

class VuaTraiCayApp extends Component {
  render() {
    return (
       <TouchableOpacity 
          onPress={()=> {
            alert("Clicked");
          }}
        >
          <View 
            style={{
              width: 200,
              height: 500,
              backgroundColor: "pink"
            }} 
          />
        </TouchableOpacity>
);
  }
}
4

2 回答 2

0

有时 VSCode 从手势处理程序导入 Touchable

import {
 TouchableOpacity
} from 'react-native-gesture-handler'

您需要正确链接库,否则它将显示按钮,但单击可能不起作用。(这只是我遇到的一个边缘情况)

其他有用的链接:https ://github.com/react-navigation/react-navigation/issues/1225

于 2019-08-10T03:32:21.460 回答
0

这是我基于您的原始代码的实现。它工作正常。请你把它与你的比较。或者可以肯定的是,发布您的 HomeScreen。我想我可以弄清楚。

如果你想测试它。复制我的所有内容并将其粘贴到您的 App.js 中(确保根 index.js 适合新的)

import React, { Component } from 'react';
import { createAppContainer, createStackNavigator } from 'react-navigation'
import { TouchableOpacity, View } from 'react-native'

class HomeScreen extends Component {
  render() {
    return (
      <TouchableOpacity
        onPress={() => {
          alert("Clicked");
        }}
      >
        <View
          style={{
            width: 200,
            height: 500,
            backgroundColor: "pink"
          }}
        />
      </TouchableOpacity>
    )
  }
}

class DetailScreen extends Component {
  render() {
    return (
      <View
        style={{
          width: 200,
          height: 500,
          backgroundColor: "yellow"
        }}
      />
    )
  }
}

const stack = createStackNavigator({
  Home: {
    screen: HomeScreen
  },
  Detail: {
    screen: DetailScreen
  }
}, {
    defaultNavigationOptions: {
      headerTitle: "Trang chủ"
    }
  })

const AppContainer = createAppContainer(stack);

class App extends Component {
  render() {
    return (
      <AppContainer />
    )
  }
}

export default App;
于 2019-08-10T17:03:49.297 回答