我最近发现onStartShouldSetResponder
React Native 中的 Pressable 组件不调用该方法。这很令人困惑,因为onStartShouldSetResponder
在使用 typescript 时,该方法在 Pressable API 中可用。
这是一个错误吗?Pressable API 是否会覆盖该onStartShouldSetResponder
方法?
在提交文档更新请求之前,我想确保我没有弄错。谢谢!
重现步骤:
- 去https://snack.expo.dev/
- 将以下示例代码粘贴到 App.js 文件中,并注意在点击 Pressable 中包裹的文本时不会调用 onStartShouldSetResponder 方法。
//This is an example of online Emulator by https://aboutreact.com
import React from 'react';
import { Text, View, StyleSheet, Pressable } from 'react-native';
const App = () => {
return (
<View style={styles.container}>
<Text style={styles.paragraph}>Hello AboutReact</Text>
<Pressable onPress={() => console.log('I was pressed')}
onStartShouldSetResponder={() => {
console.log('onStartShouldSetResponder: Why am I not being called?')
return false;
}}
onStartShouldSetResponderCapture={() => {
console.log('onStartShouldSetResponderCapture: I am being called correctly')
return false;
}}
>
<Text style={styles.text}>I should not respond</Text>
</Pressable>
</View>
);
};
export default App;
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
padding: 8,
backgroundColor: 'white',
},
text: {
backgroundColor: 'gray',
padding: 5,
},
paragraph: {
margin: 24,
fontSize: 18,
fontWeight: 'bold',
textAlign: 'center',
},
});