当我在选项卡导航器中的“根”屏幕的“屏幕”中使用对我的API的访存调用时,它们基本上会立即解决。一旦我在被推到根屏幕之一上的推入屏幕中进行相同的调用(相同的代码),它们就会非常慢。它们最多延迟20秒才能解决。
选项卡导航器:屏幕A,B,C,D,E(全部快速解析) 所有堆叠的导航器:屏幕A.a,B.b,....或A.a.a(非常慢)
有人知道导航会如何影响获取?
某些代码。
这是我使用硬编码ID进行提取以进行测试的方式。
getMessagesForConversation('5dd42e155a852e73757b35a4', 1, 0).then((res) => {
res.json().then(response => {
this.setState({
messages: response.messages
});
})
这就是我连接到网络套接字的方式。当我在两个屏幕上都删除它时,速度要快得多。
this.socket = socketIO.connect(ENV.WS_SOCKET, {secure: true});
this.socket.on('message' + '/' + '5dd42e155a852e73757b35a4', (message) => {
this.setState({
messages: [message.message].concat(this.state.messages)
});
});
这是我用于导航的App.js中的堆栈。会话是根,消息是单个聊天屏幕。
const ChatStack = createStackNavigator(
{
ConversationsScreen: {
screen: MessageScreen2,
},
MessageScreen: {
screen: MessageScreen
},
}
总体上没有太多魔力...这是导航代码。
this.props.navigation.navigate('NotificationScreen');
当我卸下插座时,它确实可以工作。但是他们连接成功。
这是详细信息。
export const getMessagesForConversation = async (conversationId, limit, page) => {
return AsyncStorage.getItem('userJwtToken').then(token => {
return fetch(ENV.API + 'chat/conversation/'+conversationId +'?page=' + page + '&limit=' + limit, {
method: 'GET',
headers: {
'x-auth-token': token,
},
}).then((resp) => {
return resp
})
});
};