ES6モジュールを使用したMeteor/Reactプロジェクトがあります。 npmを使用してmaterialize-cssをインストールしましたが、JSXコードでMaterializeクラスを実際に使用する方法がわかりません。 materialize-cssからインポートするものは何ですか?または、メインのindex.htmlファイルにCSSを含める必要がありますか?
実際のUIコンポーネントにmaterial-uiを使用するため、グリッドシステムに主に必要です。
私はCSSモジュールを使用しているため、マテリアライズCSSをインポートすると、その特定のコンポーネントにスコープが設定されます。だから私は次のことをしました
ステップ1)マテリアライズのインストール
npm install materialize-css@next
ステップ2)index.htmlで
<!--Import Google Icon Font-->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!-- Compiled and minified CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-alpha.3/css/materialize.min.css">
ステップ3)必要なコンポーネントにmaterialise.jsをインポートします
例えばSomeComponent.jsで(たとえば、これがsidenavについての場合)
import React from 'react';
import M from 'materialize-css';
....
// ref can only be used on class components
class SomeComponent extends Component {
// get a reference to the element after the component has mounted
componentDidMount(){
M.Sidenav.init(this.sidenav);
}
render(){
return (
<ul className={this.props.classes}
ref={ (sidenav) => {this.sidenav = sidenav} }
id={this.props.id}>
// menuItems
</ul>
)
}
}
初心者なので、この方法の欠点についてコメントをいただければ幸いです
NPMの場合:
ステップ1)マテリアライズのインストール
npm install materialize-css@next
更新については、マテリアライズのドキュメントを確認してください。最後に@ nextをお見逃しなく。インストールされたバージョンは次のようになります:^ 1.0.0-rc.2または^ 1.0.0-alpha.4
ステップ2)マテリアライズJSのインポート:
import M from 'materialize-css'
または、それがうまくいかない場合は、試してみることができますMを 'materialize-css/dist/js/materialize.min.js'からインポート
ステップ3)マテリアライズCSSをインポートします。
Index.htmlで
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-rc.2/css/materialize.min.css">
またはjavascriptで
import 'materialize-css/dist/css/materialize.min.css'
Cssインポートを機能させるには、css loaderが必要です。このローダーは、create-react-appを使用してビルドされたプロジェクトにすでに含まれているため、次の手順は不要です。代わりに、カスタムwebpack構成を使用している場合は、次を実行します。
npm install --save-dev style-loader css-loader
Webpack configにcss-loaderとstyle-loaderを追加してください
const path = require("path");
module.exports = {
entry: "./src/index.js",
output: {
filename: "bundle.js",
path: path.join(__dirname, "build")
},
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
},
{
test: /.js$/,
exclude: /(node_modules)/,
use: {
loader: "babel-loader",
options: {
presets: ["env", "react"]
}
}
}
]
}
}
コンポーネントを個別に、またはM.AutoInit()を使用して一度にすべて初期化できるようになりました。
ステップ4)マテリアライズアイコンをインポートします。
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
CDNの場合:
HTMLファイルに次を追加します。
<!-- Materialize CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-rc.2/css/materialize.min.css">
<!-- Materialize JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-rc.2/js/materialize.min.js"></script>
<!-- Materialize Icons -->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
次に、webpackの設定で、externalsを追加します。 https://webpack.js.org/configuration/externals/
私が使用することをお勧めできる可能な方法があります:
1つの方法は、スタイルシートファイルをindex.htmlに含め、Reactコンポーネントと同じようにclassNameプロパティを使用するだけです。
_var myDivElement = <div className="foo" />; ReactDOM.render(myDivElement, document.getElementById('example'));
_
別の方法は、すべてのスタイルシートを1つのスタイルシートファイルにバンドルし、それらを以前のスタイルシートファイルとして使用することです。
1つのオプションは、webpackを使用することです。 webpackを使用すると、含めるスタイルシートを要求するだけで、jsxファイルに埋め込まれたスタイルシートを使用できます。
require("./stylesheet.css")
詳細webpackスタイルシートオプションを調べるには: http://webpack.github.io/docs/stylesheets.html
https://react-materialize.github.io/#/ を使用して、車輪を再発明することができます。
インストールreact-materialize
npm install react-materialize
使用法
import {Button, Icon} from 'react-materialize'
export default () => (
<Button waves='light'>
<Icon>thumb_up</Icon>
</Button>
)
サンプル
https://github.com/hiteshsahu/react-materializecss-template
スクリーンショット
ReactJSでMaterialize CSSを使用する方法はいくつかあります。ただし、私は常に次の最も簡単なものを使用します。
ここでは、タグ付きのClassNameのみを使用して、HTMLサイトと同様にMaterialize CSSクラスを使用できます。
1)NPMを使用してReactJSのMaterialize CSSをインストールします。
npm install materialize-css@next
2)次に、縮小されたマテリアライズCSSファイルをindex.jsファイルにインポートします。
import 'materialize-css/dist/css/materialize.min.css'
3)Googleアイコンを使用する場合は、次のコードをpublic/index.htmlファイルに追加します。
<!--Import Google Icon Font-->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
4)最後に、入力フォームまたは他の場所でJavascriptイベントを使用するには、次のコードをpublic/index.htmlファイルに追加します。
<!-- Compiled and minified JavaScript -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
N.B. =>すべてのファイルはindex.jsファイルを通過する必要があるため、縮小したMaterialize CSSをindex.jsに一度インポートするだけで十分です。それ以外の場合は、これらのCSSファイルをすべてのjsファイルにインポートする必要があります。
これで、ReactJSフォルダーをMaterialize CSSで稼働させる準備ができました。
「imports」フォルダーにコピーして追加できます
import '../imports/stylesheets/materialize.min.css';
またはこれをLESSの例に使用してください
@import '{}npm-package-name/stylesheets/...';
これらの答えは、いくつかのコンポーネントを使用するためにバンドルサイズと大量のコードをインポートするという私の最大の懸念を満たしませんでした。コード分割と簡単なコンパイル手順を含むソリューション ここ を作成しました。
キーポイントは次のとおりです。
投稿を読む 詳細については。
CDNを使用:
<!-- Compiled and minified CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<!-- Compiled and minified JavaScript -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
その後、const M = window.M;
初期化を行います。