【问题标题】:React Rails : How to get the results of an API CallReact Rails:如何获取 API 调用的结果
【发布时间】:2021-06-27 10:29:56
【问题描述】:

我需要一个 api 调用另一个服务器的反应组件的结果:假设现在我只需要将 true 或 false 显示为文本

我有以下组件:

// some_random_thing.coffee

    { div, h5 } = DOM
    actions = require '../../actions'
    
    class MfaQRCode extends React.Component
      @propTypes: {}
    
    
      constructor: ->
        super arguments...
        @validationTimeout = null
  shouldComponentUpdate: -> true

  render:->
    div {},
      @renderStatus()

  renderStatus: ->
    h5 {className: 'column-header'},
      "BOOLEAN::"
        @props.resource.boolean_record

这是其他东西的子组件; 然后填充我在 actions.coffee 文件中的这个 boolean_record

    api = require('./api')
    AddUserPopupActions = ReactUtils.actions.creators.popup
      somethingExists: { asyncResult: true }

AddUserPopupActions.somethingExists.listen ->
  @promise(api.somethingExists(arguments...))

在 api.coffee 中

    api = ReactUtils.api
    
    class Api
    
    somethingExists: ->
      api.get "/servers/users/something/exists"

这个 get 请求在我认为没问题的 rails 控制器中处理。我的问题是,如何填充变量,以便我可以使用从另一台服务器返回 true 或 false 的请求结果。

在名为 store.coffee 的文件中有一个方法,其中填充了 props 的资源组件我需要使用 api 请求的结果来填充它:尝试过:

  onSomethingExists: (response) ->   
    @resource.boolean_record = response.responseJSON.result   
    @_update()          

但是在调试时似乎根本没有触发此方法。我对反应很陌生,并不完全了解它是如何工作的,而且考虑到咖啡脚本和导轨混合在一起的事实,几乎没有关于如何做到这一点的信息。

【问题讨论】:

    标签: ruby-on-rails reactjs ruby ruby-on-rails-3 coffeescript


    【解决方案1】:

    看起来你正在使用回流js 如果是这种情况,您的商店应该会倾听您的行动。

    onSomethingExists: (response) ->   
    

    这是在调用 somethingExists 方法时调用的,但参数是您传递给 somethingExists 函数的参数。

    您需要在您的商店中添加另外两个函数来处理您的请求的成功/错误结果:

    onSomethingExistsCompleted: (response) ->   
      console.log "onSomethingExistsCompleted", response
    
    onSomethingExistsFailed: (response) ->   
      console.log "onSomethingExistsCompleted", response
    

    要将值从这里获取到您的反应视图中,您需要在商店中使用setState,然后它应该到达@state 上的视图中,因为所述视图已连接到商店

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-13
      • 1970-01-01
      • 2018-10-20
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      相关资源
      最近更新 更多