Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native Flastlist:检测项目外部的单击_React Native - Fatal编程技术网

React native Flastlist:检测项目外部的单击

React native Flastlist:检测项目外部的单击,react-native,React Native,我正在开发一个聊天应用程序,当你点击屏幕(不是列表中的一项)时,它会显示新消息 到目前为止,我有: chatRef.current=ref} style={styles.viewContainer} 数据={messages} renderItem={renderItem} onContentSizeChange={()=>chatRef.current.scrollToEnd({animated:true})} keyExtractor={(项,索引)=>index.toString()}

我正在开发一个聊天应用程序,当你点击屏幕(不是列表中的一项)时,它会显示新消息

到目前为止,我有:


chatRef.current=ref}
style={styles.viewContainer}
数据={messages}
renderItem={renderItem}
onContentSizeChange={()=>chatRef.current.scrollToEnd({animated:true})}
keyExtractor={(项,索引)=>index.toString()}
/>
单击正在工作,但我无法再滚动我的
Flastlist

我做错了什么

编辑:\u panResponder值

const\u panResponder=React.useRef(
PanResponder.create({
onStartShouldSetPanResponder:()=>true,
onStartShouldSetPanResponderCapture:()=>false,
onMoveShouldSetPanResponder:()=>true,
onMoveShouldSetPanResponderCapture:()=>true,
onPanResponderGrant:(evt,手势状态)=>{
shoulldDisplayNextMessage.current=true;
},
onPanResponderMove:(evt,手势状态)=>{
if(shouldDisplayNextMessage.current){
shouldDisplayNextMessage.current=false;
}
},
onPanResponderTerminationRequest:(evt,gestureState)=>true,
onPanResponderRelease:(evt,手势状态)=>{
if(shouldDisplayNextMessage.current){
setMessagesIndex(prevValue=>prevValue+1);
}
},
}));

我同意手势应答器的生命周期令人困惑。您是否可以查看文档页面,更具体地说是其中的一部分

在应答器系统从最深的组件冒出气泡之前,它将执行捕获阶段,在*ShouldSetResponderCapture上启动。因此,如果父视图希望防止子视图在触摸启动时成为响应者,那么它应该有一个onStartShouldSetResponderCapture处理程序,该处理程序返回true

因此,在这种情况下,我猜您的
onMoveShouldSetPanResponderCapture
也应该返回false,否则父视图将阻止平面列表在滚动时成为响应程序


我认为最好将这些协商方法的文档复制到您的代码中

我试过了,但结果是一样的。奇怪的事情:如果我将every
ShouldSet
设置为false,那么滚动条仍然不工作,而且在没有panresponder的情况下也可以工作,对吗?只是检查一下。是的,没有PanResponder,它可以工作,但我仍然错过了显示新项目的点击扫描,您只需添加一些屏幕截图或Gif就可以了