【发布时间】:2018-05-07 23:05:06
【问题描述】:
我目前正在学习 ReactJS 以及如何使用 Ruby on Rails 作为其后端,所以如果我做出愚蠢的假设,我深表歉意,请随时责骂我。
我正在关注作者使用 Coffeescript 而不是 ES6 来处理他的 ReactJS 代码的教程。
他提供了一个与此类似的示例组件(coffeescript):
@Rows = React.createClass
render ->
React.DOM.div
className: 'rows'
React.DOM.h1
className: 'title'
'Rows'
这有两个错误。第一个属于React.createClass,我发现它已被弃用,不再有效。相反,我使用的是createReactClass。好的。但是现在,React.DOM.h1 给出了一个错误,说 Uncaught TypeError: Cannot read property 'h1' of undefined,对于我使用的任何其他 HTML 标记都是一样的。我认为这是由于createReactClass 没有提供React.createClass 之前提供的必要功能。
无论如何,在研究与此间接相关的另一个错误时,I found someone suggesting to use something like this:
@Rows = React.createClass
render ->
div
className: 'rows'
h1
className: 'title'
'Rows'
所以,切断React.DOM 部分。这给出了另一种类型的错误,即:Uncaught ReferenceError: div is not defined。同样,我假设这是由于更改为 React.createClass。
有没有办法将 React 与 CoffeeScript 一起使用,这样我就可以像这样使用它:
@Rows = createReactClass
render ->
div
className: 'rows'
h1
className: 'title'
'Rows'
无需打开和关闭 HTML 标签,也无需React.DOM?
我不知道这是否可能,或者它是否曾经奏效,或者即使有很多方法可以实现类似结果的目标。在我深入研究 React 之前,我只是想知道是否有办法做到这一点。
谢谢!
更新
我已经取得了一些进展,但我仍然遇到错误。我尝试了以下方法:
import React from 'react'
import ReactDom from 'react-dom'
{div, h1, p} = ReactDom
class Rows extends React.Component
render: ->
h1
className: 'col-md-12'
'Rows'
export default Rows
这会产生以下错误:Uncaught TypeError: h1 is not a function。
【问题讨论】:
-
官方文档为您提供所需信息coffeescript.org/v2/#jsx
-
除非我遗漏了什么,否则他们只提到 XML 元素,这些元素必须用开始和结束标记括起来。我的问题是关于在我的第三个代码 sn-p 中使用它们(没有结束标签,只有缩进,coffeescript 样式)。
-
要使用类似 jsx 的语法编写,请参阅 stackoverflow.com/questions/61615873/…
标签: reactjs coffeescript ruby-on-rails-5