React-Native:在React-Navigation Stack Navigator中使用时获取延迟/缓慢

时间:2019-11-19 21:12:56

标签: react-native

当我在选项卡导航器中的“根”屏幕的“屏幕”中使用对我的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
        })
    });
};

0 个答案:

没有答案