【问题标题】:How to load changes instantly - React Native如何立即加载更改 - React Native
【发布时间】:2017-05-27 22:29:40
【问题描述】:

问题

如何在每次将新数据添加到服务器时加载新数据?

我希望发生的事情

  • 用户打开应用
  • 用户将文本上传到服务器
  • 应用程序立即显示来自服务器的文本

目前正在发生的事情

  • 用户将文本上传到服务器
  • 用户重新加载应用
  • 应用显示来自服务器的文本

服务器端

我将 expressJS 用于服务器,然后将服务器获取的所有文本保存到异地 mongoose DB。

更多信息

  • 我正在使用 Node JS 服务器

  • 我正在使用 fetch API 在服务器和 客户

  • 客户端应用使用 React Native 编写

【问题讨论】:

    标签: node.js mongodb express mongoose react-native


    【解决方案1】:

    我不知道您的应用如何发出请求。来自服务器和客户端的一些代码会很有用。但我可以为您的情况考虑两种可能的解决方案:

    从上传请求中返回您的文本

    由于您需要服务器的响应AFTER 用户将文本上传到服务器,您可以在upload request 中使用response data。这是一个示例代码:

    fetch('https://your-server.com/api/upload-text/', {
      method: 'POST',
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        text: 'yourValue',
      })
    }).then(response => response.json())
    .then(responseJson => {
      // Here is your text returned from server
      let serverText = responseJson.text
    
      // Set your state here with new data
      this.setState({
        textFromServer: serverText
      });
      // Now you can display new data in your render method.
    })
    

    通过这种方式,用户无需重新加载应用即可获取新的文本数据。服务器响应上传请求后,您的应用将更新。

    WebSocket

    如果您需要从服务器获取的数据不依赖于客户端请求,您可以使用websockets。通过这种方式,您可以随时从服务器或其他客户端获取/发送任何数据。 React Native 支持 websockets。更多关于here

    【讨论】:

    • 谢谢,但我想知道如何让应用程序始终监听,我希望它每次更新时都能获取新数据。即使该用途不是更新它的用途。
    • 这就是我提到 websockets 的原因。每次更新数据时,使用 websockets 并向客户端发送消息。这就是 websockets 代表的原因。
    • 只需查看socket.io 示例即可了解服务器和客户端之间的通信方式。这很简单。 @pudility
    • 谢谢,但我想知道是否有任何方法可以做到这一点而不会过多地打扰服务器。我想如果每次发出请求时,服务器都必须评估告诉谁刷新然后告诉他们刷新,这将是非常耗费资源的。我想知道是否有一种方法可以做到这一点,其中客户端是更新的,而不是服务器。感谢您的帮助!
    • 如果服务器每秒有两百个请求,这可能是个问题。有没有其他方法可以提高效率?谢谢!
    猜你喜欢
    • 2017-12-24
    • 2017-06-16
    • 2017-12-07
    • 2022-08-14
    • 2021-12-25
    • 2020-08-22
    • 1970-01-01
    • 2021-08-18
    • 2020-10-16
    相关资源
    最近更新 更多