我能否在React Native中禁用一个View组件?

61

我的应用程序屏幕上有一个包含几个文本输入框的View组件。我无法禁用文本输入框。有没有办法可以禁用整个View组件?

P.S.: 禁用View组件是指该组件可以呈现,但对任何操作都不起作用。

3个回答

146
你可以使用 pointerEvents:
<View pointerEvents="none">
  ...
</View>

这将使视图无法响应触摸事件。

你可以使用类似以下的代码:

<View pointerEvents={myCondition ? 'none' : 'auto'}>


感谢您提供的解决方案。 - user3300203
我们可以有条件地给它吗? - Dhrupal
7
可以使用类似 <View pointerEvents={myCondition ? 'none' : 'auto'}> 这样的语句。它的意思是,如果 myCondition 条件为真,则指针事件被禁用(即不能与该元素进行交互),否则指针事件将启用。 - Kerumen
超级有用的属性,我怎么从来没有听说过? - Nicolas Silva
谢谢,这很快。 - gshoanganh

29

补充 Kerumen 的回答,有一些罕见情况:

<View pointerEvents={myCondition ? 'none' : 'auto'}>
  ...
</View>

你可能需要将它放在一个匿名函数中:

<View pointerEvents={() => myCondition ? 'none' : 'auto'}>
  ...
</View>

1
看起来你的代码块格式不是你想要的。此外,在什么情况下需要将其包装在匿名函数中? - Joey Harwood
老实说,我不知道为什么,但是直到我将它包裹在一个函数中,它才能正常工作。我正在调查找出原因。 - Hasn Ar
这个完美地运作了! - undefined

0
在您想要使其对任何操作不响应的空间中创建一个TouchableOpacity。 像这样:

<TouchableOpacity style={{ width : 40 , height : 40}} activeOpacity={1}>
</TouchableOpacity>

此区域没有来自父组件的任何操作


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接