react-rails gem 不适用于 to_json

react-rails gem not working with to_json

每当我尝试在 react_component 帮助程序上将其他选项传递给 to_json 时,它就会像普通字符串一样被解析为 react prop。

<%= react_component "SelectableActivityLevel", 
  phase: UserService.active_phase(@user).to_json(methods: "pictures_url"),
  activity_levels: @activity_levels
%>

结果

this.prop.activity_levels //Object (correct)
this.prop.phase //String (incorrect)

gem 的文档说:

props is either an object that responds to #to_json or an already-stringified JSON object (eg, made with Jbuilder, see note below).

这并没有多大帮助。

Jbuilder 示例也没有帮助,因为我正在使用 to_json。

谢谢你的帮助。

我使用 as_json 解决了问题

<%= react_component "SelectableActivityLevel", 
  phase: UserService.active_phase(@user).as_json(methods: :pictures_url),
  activity_levels: @activity_levels
%>

为什么?

to_json 返回转义的字符串。 例如:

=> "{\"name\":\"bla bla\"}"

并且 react-rails 只是在 prop 是字符串时将其作为字符串。 (第 3 行)

    html_options[:data].tap do |data|
      data[:react_class] = name
      data[:react_props] = (props.is_a?(String) ? props : props.to_json)
    end

不知道大集合的性能问题,但我基本上只是用几个字段序列化一个简单的对象,所以我根本不担心它。