Reactjs 将React组件路由到部分rails?

Reactjs 将React组件路由到部分rails?,reactjs,react-router,ruby-on-rails-4.2,partials,Reactjs,React Router,Ruby On Rails 4.2,Partials,我的Rails 4.2应用程序中有一个React组件,通过contact/new将其设置为NewContactForm,并以这种方式独立运行。然而,我一直在寻找将其注入到现有Rails页面(listings/new或listings/edit,两者都通过\u表单partial)中,以便该信息与之关联,从而获得更好的流。目前,我的路由要求我有一个精确的路径来渲染组件;我有没有办法在一个部分中渲染我的组件?我知道这样做的目的是能够在任何地方使用应用程序,我只是不确定在这种情况下路由是如何处理的(除非

我的Rails 4.2应用程序中有一个React组件,通过
contact/new
将其设置为
NewContactForm
,并以这种方式独立运行。然而,我一直在寻找将其注入到现有Rails页面(
listings/new
listings/edit
,两者都通过
\u表单
partial)中,以便该信息与之关联,从而获得更好的流。目前,我的路由要求我有一个精确的路径来渲染组件;我有没有办法在一个部分中渲染我的组件?我知道这样做的目的是能够在任何地方使用应用程序,我只是不确定在这种情况下路由是如何处理的(除非
views/contacts/new
转换为partial并传入?)

app.jsx:

import React from 'react'
import { Switch, Route } from 'react-router-dom'
import WarehouseReport from './reports/warehouse'
import NewContactForm from './contacts/new-contact-form'

export default function App() {
  return <Switch>
    <Route exact path='/:account_id/warehouses/:warehouse_id/warehouse_report' component={ WarehouseReport }/>
    <Route exact path='/:account_id/contacts/new' component={ NewContactForm }/>
  </Switch>
}
从“React”导入React
从“react router dom”导入{交换机,路由}
从“./reports/warehouse”导入WarehouseReport
从“./contacts/new contact form”导入新联系人表单
导出默认函数App(){
返回
}

您似乎混淆了组件内部的路由器和rails路由器

此处指定的路由将处理组件本身内部的路由。这意味着单击组件内部的任何内容都将呈现组件本身中的其他内容,但不会影响rails服务器提供的路由

假设组件需要自己的路由的场景是,您有一个多步骤形式的组件,并且您使用路由器来处理您所处的步骤

要在部分本身内部渲染组件,似乎最简单的方法是使用react rails和react helpers的组合

  • 将react rails gem添加到您的设置中
    gem'react rails'

  • 捆绑所有React组件,使其可供使用

  • 使用react_component helper在局部视图中渲染组件:


  • 现在我正在Rails应用程序中通过
    webpacker
    生成React。添加新的gem会影响我现有的组件吗?我个人没有使用过这种方法,但我不理解webpacker的功能。构建时,它是否会在packs文件夹中为您创建一个新的js文件,其中包含组件文件名?否,它只是将React的静态模块绑定器创建到资产管道中。但是根据您链接的文章,在构建之后,它确实在
    javascript/packs
    javascript/components
    文件夹中创建了一个app jsx包。您可以使用webpacker帮助程序调用它,例如:
    。是。您可以在React中制作两个单独的组件,而无需路由器。然后,只需使用webpacker帮助程序在需要的地方调用每一个。