问题标签 [react.rb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
223 浏览

reactjs - 在测试之间重置 react.js

我正在使用 React.rb(一个 opal-ruby 绑定到 react.js)和 Opal-rspec 进行测试。

似乎我需要在测试之间重置 react 的内部结构,因为在某些测试中我遇到了可怕的“无法读取未定义的属性 'firstChild'”错误。

如果我将“失败”测试移动到第一个测试,那么错误就会消失(但可以在以后的测试中出现。)

React.rb 没有被加载两次,我已经确定了几种方法,包括将 console.log 放入 react 源文件的第一行。

SOOO 看来我需要一种方法来完全清除测试之间的反应状态。有什么办法吗?

0 投票
1 回答
169 浏览

ruby - 蛋白石遇到问题并尝试渲染一个简单的 react.rb 模板

我正在尝试将 react.rb gem 与蛋白石一起使用,但是我遇到了麻烦。

下面是一个简单的 hello world 组件,没什么复杂的。

这样做:

得到了我的期望,这个:

问题是当我尝试将模板渲染到 dom 时。

这:

只是给我:

所以我认为这是因为document.body尚不存在,但是以下都不能访问窗口工作(或文档):

似乎没有适用于 JS 等效项的蛋白石命令文档,而且我找不到任何示例工作。

我快要拔头发了,我该怎么办?

编辑:

执行以下操作实际上有效:

我没有使用 jquery,所以我必须执行以下操作才能获得document.ready

但它是 suuuuper hacky。

0 投票
1 回答
77 浏览

jquery - 试图让 react.rb 模板使用 opal-jquery 在蛋白石中呈现,现在可以正常工作了

我承认这与我之前的问题相似,但并不完全相同。由于我最终使用了 ajax 请求,因此我决定将 opal-jquery 添加到我的堆栈中(除非您知道更简单的方法)并切换到使用Document.ready?它提供的功能。

我的函数现在看起来像这样:

我这样称呼它:

问题是,在此之前它可以正常工作,而现在,它不是,我遇到了一个Uncaught NoMethodError: undefined method '[]' for nil错误,它正在工作,然后它突然开始这样做。

错误是因为某种原因 Element.find[mount_point]正在返回nil,我不知道为什么。它应该在加载 dom 后运行,因此挂载点'#view_port'应该存在;正如您在此处看到的,它肯定存在于 dom 中:

我什至试过把它包起来,window.addEventListener("load", function () {}但没有效果。

为什么现在不起作用?我错过了什么?

0 投票
1 回答
152 浏览

ruby - opal-jquery ajax 请求发送格式错误的 json 字符串

我正在使用 opal-jquery 向我的后端发送 ajax 请求,但是当我尝试在后端访问它时,json 有效负载格式错误。

当我puts @params.to_s在后端执行时,它显示为:

因此,要获取登录详细信息,我必须这样做:

我的前端(蛋白石)提交请求如下所示:

我绝对知道细节的格式正确,所以这不是问题。

我想最后归结为是否

  1. opal-jquery 错误地发送 post 请求

  2. sinatra 不正确地解析请求。

我不确定它是哪一个,但我倾向于相信它是前者,因为在我改用 react.rb 作为前端之前它运行良好。

0 投票
1 回答
54 浏览

ruby - 通过 ajax 提交的表单请求与每个后续提交相乘

我有一个发出 ajax 请求的表单,问题是每次我点击它时,它发出请求的次数都会成倍增加。

现在我确定这是因为我设置了提交拦截的方式,但我不知道如何在仍然将其封装为单个组件的同时做到这一点。

我使用 react 作为我的视图层,并且我附加了一个函数,其中包含拦截请求的代码,并且在afterMount回调和after_update回调中都调用了这个函数;如果我不这样做,那么表单提交永远不会被拦截,或者它只拦截一次,然后只是进行正常提交。

现在显然它正在成倍增加,因为这些事件会触发并添加一个额外的提交处理程序。

我正在使用 opal 和 react.rb 所以代码看起来有点奇怪。

这是我拦截表单上的提交操作的函数

这是我的回电:

我能够通过检查组件状态是否已经在请求中间来减少请求的数量,虽然这并没有减少添加的提交处理程序的数量,但它确实阻止了很多事情,但是它不会停止添加处理程序的实际乘法。

0 投票
2 回答
130 浏览

ruby-on-rails - 将服务器端 Ruby 嵌入到 rails 中的蛋白石文件

是否可以将服务器端 ruby​​ 嵌入到 Opal .js.rb 文件中?换句话说,我需要访问例如User.find(1)Rails 中的一些蛋白石文件,就像使用 .erb 一样。

0 投票
1 回答
80 浏览

reactjs - 如何从 react.rb 组件生成多个 dom 元素

我正在尝试使以下代码正常工作:

但我不断收到此错误:

Exception raised while rendering #<HelloWorld:0x489> RuntimeError: a components render method must generate and return exactly 1 element or a string

0 投票
1 回答
31 浏览

react.rb - 无法使用 react.rb 设置 defaultValue

我的代码是 input(type: "text", name: "name", defalut_value: obj.name) ,我也试试这个 input(type: "text", name: "name", defalutValue: obj.name)

我总是 <input type="text" name="name" data-reactid=".0.1.1.1.1"> 没有“defalutValue”

0 投票
1 回答
365 浏览

opalrb - 未捕获的 NoMethodError:未定义的方法 `render' for #

我想在 Opal 文件中使用此代码安装我的组件:

Element['#wizard_param_grid_editor'].render do
   ZGrid(rows: @work_spaces)
End

我得到了错误

我想在 Opal 文件中使用此代码安装我的组件:

我得到了错误

Uncaught NoMethodError: undefined method render' for #]>


0 投票
1 回答
31 浏览

code-snippets - 我可以在片段中有自定义链接吗?

我可以使用 Stack Overflow 的新片段编辑器加载我自己的自定义库吗?我可以使用自定义脚本标签吗?例如,我想举一些使用内联反应红宝石的例子。