2015-07-22 33 views
0

我想在我的反應網站中使用material-ui.com,但我無法理解如何添加到我的asp.net網站。捆綁並在另一個文件中使用

我browserify.But捆綁我不能在我的其他pages.I使用它採取錯誤控制檯

Uncaught TypeError: Cannot read property 'toUpperCase' of undefined .

var CalisanIslemListesi = React.createClass({ 
 
    contextTypes: { 
 
     router: React.PropTypes.func 
 
    }, 
 
    
 
    render:function(){ 
 
     return (<p><RaisedButton /></p>); 
 
    } 
 
});

我的包文件http://www.filedropper.com/materialuibundle

回答

0

這是對我來說也是一個非常普遍的問題。發生這種情況是因爲MaterialUI需要一些基本樣式才能工作。您可以在這裏找到它們:http://material-ui.com/#/get-started

所以,除非您將這些樣式添加到所有使用material-ui的組件中,否則它將顯示上述錯誤,因爲它正在尋找不可用的依賴項。如果你轉到上面的鏈接,它會告訴你它需要什麼樣的風格。但是,每次在我製作的每個組件中都包含這些樣式變得非常繁瑣。

我使用了React Mixins。它們基本上是可以添加到組件代碼中的部分組件。當你將一個mixin添加到一個組件時,實際發生的是,mixin被擴展並添加到你的組件中。很像變量字符串連接(恐怖的例子,我知道,但它會幫助你理解)。當您將一個變量添加到字符串連接時,變量會被其值取代。這就是React Mixins發生的情況。

這是我喜歡做的事:

定義在我的目錄中的material.jsx文件,該文件是這樣的(它基本上是從他們的入門頁面複製):

var React = require('react'), 
    mui = require('material-ui'), 
    ThemeManager = new mui.Styles.ThemeManager(), 
    injectTapEventPlugin = require("react-tap-event-plugin"); 

injectTapEventPlugin(); 

module.exports = { 
    childContextTypes: { 
     muiTheme: React.PropTypes.object 
    }, 

    getChildContext: function() { 
     return { 
      muiTheme: ThemeManager.getCurrentTheme() 
     }; 
    } 
} 

以上只是一個mixin,它包含Material-UI正常運行所需的所有樣式。 現在,我將使用上述模塊作爲所有Material-UI組件的混合。

var React = require('react'), 
    material = require('./material.jsx'), 
    mui = require('material-ui'), 
    FlatButton = mui.FlatButton 

module.exports = React.createClass({ 
    mixins: [material], 

    render: function() { 
     return <FlatButton>Hello</FlatButton> 
    } 
}) 

在你的代碼,如果你把這個material.jsx文件,並添加行混入:[材料]像我一樣,一切都會開始工作:)

相關問題