使用react-rails在Rails中引入React

大家好,本次我们将介绍一种在Rails中使用”react-rails” gem来引入React的方法。虽然有多种方法可以在Rails中引入React,但我选择了这种简单和常见的方法。需要注意的是,这种方法会使代码与Rails有密切关联,因此可能会引起一些喜好分歧。

此外,公式文件可以通过以下URL访问。
react-rails的URL:https://github.com/reactjs/react-rails#server-side-rendering

我会按照以下的流程进行介绍。

    • 前提

 

    • react-railsの導入

 

    • componentの作成

 

    veiwで出力

前提 – premise

Note: The phrase “前提” is already in Chinese.

1. 已经使用rails-new等方法创建了应用程序。
2. 使用了rails5.0之后的版本。

引入react-rails

请在Gemfile的底部添加以下内容。

gem 'webpacker'
gem 'react-rails'

请事先确认根据 Rails 版本的不同,可能会默认安装“webpacker”,请确保已做检查。
请使用 cd 命令等将目标应用程序目录切换至。
接下来,按照以下命令顺序执行。

$ bundle install
/*①*/ $ rails webpacker:install
/*②*/ $ rails webpacker:install:react
$ rails generate react:install

注意!只能在Rails 5.0及以上的版本中执行①和②命令。

暂时准备工作完成了!

创建组件

通常情况下,编写React需要在名为components的目录中创建文件。您可以手动创建,但建议按照官方文档进行创建。请在终端或其他地方执行以下命令。

$ rails g react:component HelloWorld greeting:string

然后将创建下面的文件。

import React from "react"
import PropTypes from "prop-types"
class HelloWorld extends React.Component {
  render () {
    return (
      <React.Fragment>
        Greeting: {this.props.greeting}
      </React.Fragment>
    );
  }
}

HelloWorld.propTypes = {
  greeting: PropTypes.string
};
export default HelloWorld

用这个就完成了文件的创建。

在veiw上输出

让我们从创建的组件中输出React的内容。

<%= react_component('HelloWorld', greeting: 'Mike') %>

让我们在浏览器中查看输出内容。
应该输出为“问候:Mike”。

除了components目录以外,您也可以自己创建目录。
请运行以下命令。

$ rails g react:component my_subdirectory/HelloWorld greeting:string

然后,之前执行的命令会在components目录下创建一个js文件,但是这次会变成以下这样。

import React from "react"
import PropTypes from "prop-types"
class HelloWorld extends React.Component {
  render () {
    return (
      <React.Fragment>
        Greeting: {this.props.greeting}
      </React.Fragment>
    );
  }
}

HelloWorld.propTypes = {
  greeting: PropTypes.string
};
export default HelloWorld

如果在命令中指定的“my_subdirectory”下创建了js文件,那么请在视图中添加以下内容来调用。

<%= react_component("my_subdirectory/HelloWorld", { greeting: "Hello from react-rails." }) %>

当你检查浏览器时,应该输出”Greeting: Hello from react-rails.”

由于可以使用react_component方法轻松调用,这非常方便。
我也是刚刚开始使用,所以我打算从现在开始尝试各种修改。

最近越来越多的日子变得寒冷了,我都快冻僵了,只能用僵硬的手像模特一样敲击键盘。(要是开暖气就好了啊…)

感谢您阅读到最后!!