reactjs - 将 React 组件路由到 Rails 部分?
问题描述
我的 Rails 4.2 应用程序中有一个 React 组件,它被设置为NewContactForm
through contact/new
,并且以这种方式运行良好。但是,我一直希望将其注入现有的 Rails 页面(listings/new
或者listings/edit
,两者都通过_form
部分呈现),因为此信息附属于该信息,以获得更好的流动性。就目前而言,我的路由要求我有一个将组件渲染到的确切路径;有什么方法可以让我在部分中渲染我的组件吗?我知道这个想法是能够在应用程序的任何地方注入 React,我只是不确定在这种情况下如何处理路由(除非views/contacts/new
转换为部分并传入?)。
应用程序.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>
}
解决方案
您似乎将组件内的路由器与此处的 rails 路由器混淆了。
此处指定的路由将处理组件本身内部的路由。这意味着单击组件内部的任何内容都会在组件本身中呈现其他内容,但不会影响您的 rails 服务器提供的路由。
组件需要自己的路由的假设场景是您有一个多步骤表单的组件,并且您正在使用路由器来处理您所在的步骤。
要在局部内部渲染组件,似乎最简单的方法是使用react-rails和 react 助手的组合
将 react-rails gem 添加到您的设置中
gem 'react-rails'
捆绑所有 React 组件,以便它们可供使用。
使用react_component助手在你的局部渲染组件:
<%= react_component('ComponentName', {prerender: true}) %>
推荐阅读
- html - 玻璃态射:试图让 div 定位在图像之上
- php - 将 PDF 文件作为图像运行(仅限第一页)速度慢
- python - 如何将 asyncio 任务添加到 pyqt5 事件循环中,以便它运行并避免从未等待的错误?
- javascript - 在鼠标悬停时调整图像大小而不影响其余内容?
- python - 为什么在推理中使用 Variable()?
- mysql - 为什么我不能更改 mysql int 值?
- node.js - 在 Node.js 中使用现有的 C 代码作为本机插件
- drop-down-menu - Bootstrap 5 下拉菜单失败
- c# - 从另一个表单类访问数据集
- apache-spark - Pyspark - 在 enableHiveSupport() 时创建增量表