2

我是 React 新手,我已经阅读了有关如何将 React 用作​​独立服务的官方 React 教程,并且刚刚阅读了有关在 Rails 应用程序中使用 react-rails gem 的本教程,大部分我已经占用正是我需要的。我遇到的问题是我需要为我的小 React 页面实现某种简单的 API 轮询,但我似乎无法在任何地方找到关于如何在 react-rails 中最好地实现这一点的文档。

在 react 教程中,它告诉我们pollinterval = 2000在声明数据源时使用每 2000 毫秒轮询一次源。我尝试按如下方式实现,但无济于事:

@Records = React.createClass
    getInitialState: ->
      $.ajax
        method: 'GET'
        url: '/records'
        dataType: 'JSON'
        success: (response) ->
          records: response
      pollinginterval: 2000
    ...

不幸的是,当我加载页面时,不仅没有实际显示任何内容,而且似乎根本没有查询数据库——即使是最初。这让我相信这不是 AJAX 调用/设置轮询间隔的正确位置,但在我的谷歌搜索中没有什么特别有用的。

4

2 回答 2

2

这种方法怎么样?

@Records = React.createClass
  getInitialState: ->
    # `this.state.records` is empty now, but will be loaded by AJAX
    {
      records: [] 
    }

  componentDidMount: ->
    # Ping every 2s
    @_recordsInterval = setInterval =>
        @_loadRecords()
      , 2000
    # Load initial data: 
    @_loadRecords()

  componentWillUnmount: -> 
    # clean up loose ends: 
    clearInterval(@_recordsInterval)
    @_recordsRequest?.abort()

  # ...

  _loadRecords: ->
   # Fetch records from the server and store it as `this.state.records`
   @_recordsRequest = $.get "/records", (data) => 
     @setState(records: data)
于 2016-03-17T13:46:07.517 回答
0

我建议您执行 ajax 调用componentDidMount而不是getInitialState.

查看本教程以加载 ajax 数据。https://facebook.github.io/react/tips/initial-ajax.html

于 2016-03-17T12:29:36.487 回答