当前位置: 首页 > 面试题库 >

使用带有react-rails gem的“ material-ui”?

姬雪松
2023-03-14
问题内容

我想在Rails 4应用程序中使用material-ui组件库。我目前正在使用react-rails
gem将.jsx编译添加到资产管道。我已经在gemfile中通过rails-assets添加了material-ui,如下所示:

source 'https://rails-assets.org' do
  gem 'rails-assets-material-ui'
end

我需要在application.js文件中添加该库,如下所示:

//= require material-ui

但是,我不断收到错误消息“找不到文件’material-ui”。如何将我的Rails应用程序中的material-ui组件库与react-rails
gem一起使用?


问题答案:

好的,这就是我到目前为止的工作…

到我添加的gemfile中:

gem 'react-rails'
gem "browserify-rails"

这为我们提供了反应库,助手和jsx编译,以及使用require()语法在JS中要求模块的能力。browserify-
rails还允许我们通过package.json文件在您的Rails资产中需要npm模块。

我们可以通过package.json文件将material-ui库添加到我们的应用中…

"dependencies" : {
    "browserify": "~> 10.2.4",
    "browserify-incremental": "^3.0.1",
    "material-ui": "0.13.1"
  },

素材ui库使用require语法以正确的顺序将所有不同的jsx组件文件连接在一起,因此这就是为什么我们需要使用browserify-rails的原因。

接下来,为了将我们的响应代码保持在一起,我在asset / javascripts中创建了一个名为/ react的新目录。

react
    L /components
    L react.js
    L react-libraries.js
    L theme.js

现在,作为“ material-ui”依赖项的一部分,我们有了react库。这意味着目前我们有该库的两个副本。一种来自“ react-rails”
gem,另一种来自“ browserify-rails”库的“ material-ui”库依赖项。让我们使用“ material-
ui”依赖项中的一个,而保留“ react-rails”中的一项。

在react.js中:

//= require ./react-libraries
//= require react_ujs
//= require_tree ./components

然后在react-libraries.js中

//React Library
React = require('react');
//Material Design Library
MaterialUi = require('material-ui/lib');
injectTapEventPlugin = require('react-tap-event-plugin'); injectTapEventPlugin();
//Material Design Library Custom Theme
MyRawTheme = require('./theme');
ThemeManager = require('material-ui/lib/styles/theme-manager');

然后我们要使用…将所有这些内容包括在资产管道中

//= require react/react

在application.js中。

现在,您可以在/ react / components /中的jsx文件中编写组件。您可能还希望使用以下命令为组件命名空间:

//Custom Components Namespace
Components = {};

在react-libraries.js中

您可以像这样在theme.js中自定义主题…

Colors = require('material-ui/lib/styles/colors');
ColorManipulator = require('material-ui/lib/utils/color-manipulator');
Spacing = require('material-ui/lib/styles/spacing');

module.exports = {
  spacing: Spacing,
  fontFamily: 'Roboto, sans-serif',
  palette: {
    primary1Color: Colors.grey300,
    primary2Color: Colors.grey300,
    primary3Color: Colors.lightBlack,
    accent1Color: '#01A9F4',
    accent2Color: Colors.grey100,
    accent3Color: Colors.grey500,
    textColor: Colors.darkBlack,
    alternateTextColor: Colors.white,
    canvasColor: Colors.white,
    borderColor: Colors.grey300,
    disabledColor: ColorManipulator.fade(Colors.darkBlack, 0.3)
  }
};

希望有帮助:)



 类似资料:
  • React Native Material UI (iOS and Android supported) Highly customizable material design components for React Native! Documentation Getting Started Usage Demo & Examples Components Showroom Savee.io i

  • 我试图使用一个具有自定义主题的按钮作为React中弹出窗口的触发器: 但是,当我这样做时,我得到这样的错误:“失败的道具类型:以下道具不受支持:。请删除它们。在ThemeProvider中”和“不能给函数组件提供引用。访问此引用的尝试将失败。您是指使用react.forwardRef()吗?”。我想阻止这个错误。按钮变得五颜六色,但它没有打开弹出窗口。

  • 问题内容: 我想给我的新应用程序一致的外观和使用感觉。另外,我希望样式等易于维护。因此,默认主题似乎是一个不错的开始。该所提供的似乎要检查所有的盒子,所以我想试一试。令人惊讶的是,这没有用。CSS主题不是我真正的事情。我在这里被误导了吗?以下代码是我在App.js组件中实现的,没有运气(从此处获取)。我希望这只是一个实现细节。 编辑 :这是位于项目的根目录: 编辑: 我新的App.js 问题答案:

  • 问题内容: 这是一个教育项目,不用于生产。我本来不想让用户登录。 我可以在没有用户登录的情况下使用CSRF令牌对Django进行POST调用吗?我可以不使用jQuery来做到这一点吗?我在这里不了解我的观点,并且肯定会混淆一些概念。 在JavaScript方面,我找到了这个redux-csrf软件包。我不确定如何将其与POST使用Axios的操作结合使用: 在Django方面,我已经阅读了有关CS

  • 问题内容: 我想使用出色的create-react- app工具来启动新的react项目,但是我需要使用php服务应用,以允许我获取一些动态数据和配置,并在启动之前对其进行反馈。 我如何将create-react-app配置为服务器php? php有自己的内置服务器,所以也许我们可以用它来启动index.php 有没有办法让webpack启动php内置服务器,并且仍然具有react-create-

  • react-native-material-cards A material design card component, customizable and versatile. See Google Material Design for more info on Cards. Installation npm install --save react-native-material-cards