我无法使用 React_on_Rails gem 注册组件

Posted

技术标签:

【中文标题】我无法使用 React_on_Rails gem 注册组件【英文标题】:I can't register components using React_on_Rails gem 【发布时间】:2017-08-25 00:07:56 【问题描述】:

注册在默认的 HelloWorld 应用中运行良好,但是一旦我删除了文件夹并创建了自己的文件夹,它就停止工作了。

我在 app/bundles 下创建了一个名为 posts 的新文件夹,其中包含一个启动文件夹。

在启动文件夹中,我正在像这样注册组件:

import ReactOnRails from 'react-on-rails';

import PostContainer from '../containers/PostContainer';

ReactOnRails.register(
  PostContainer
);

PostContainer.jsx 文件位于容器文件夹中,如下所示:

import React,  PropTypes, Component  from 'react';

export default class PostsContainer extends React.Component 
  render() 
    return (
      <div>
        <Header />
        <PostList posts=this.props.posts />
      </div>
    )
  

我的 webpack.config.js 文件如下所示:

entry: [
    'es5-shim/es5-shim',
    'es5-shim/es5-sham',
    'babel-polyfill',
    './app/bundles/HelloWorld/startup/registration',
  ],

我尝试将 HelloWorld 更改为帖子或帖子,但没有成功。

我应该有一个名为 webpack.configure.build.js 的文件吗?还是 webpack.config.js 是我需要编辑的文件?

任何帮助将不胜感激!

【问题讨论】:

我们可以获取所有这些文件的文件路径吗? 【参考方案1】:

您是否将组件添加到 erb 视图文件并传入相关的 props?您需要在 Posts 控制器或呈现您的 Posts 视图的任何控制器中添加道具。我很确定你需要在你的 webpack 配置中添加一行:

config: 
  'webpack-bundle': [
    '...',
    './app/bundles/Posts/startup/registration'
  ]

那么在你看来:

<%= react_component("PostsContainer", props: @posts_props, prerender: false) %>

还要确保您的布局文件中有:

<%= javascript_pack_tag 'webpack-bundle' %>

注意:PropTypes 现在应该从 prop-types 包中导入。最近,React 团队从 React 核心中提取了该软件包。

【讨论】:

以上是关于我无法使用 React_on_Rails gem 注册组件的主要内容,如果未能解决你的问题,请参考以下文章

当通过 NVM 安装 NPM 时,Capistrano 部署失败并出现 react_on_rails

使用“gem pq”安装 PostgreSQL gem 失败并出现错误:无法构建 gem 本机扩展

Bundler 无法与 rbenv 一起使用,找不到 [gem]

Rails + React +antd + Redux环境搭建

gem install:无法构建 gem 原生扩展(找不到头文件)

无法安装旧的 mysql2 gem