Material-UI:更新库后代码不工作
Material-UI: Code not working after updating the library
我对material-ui相当陌生,一旦我从0.14.4更新到0.15.4,我的代码工作就会遇到麻烦。下面是我的代码片段:
var React = require('react'),
mui = require('material-ui'),
LoginDialog = require('./login-dialog.jsx'),
RaisedButton = mui.RaisedButton,
MuiThemeProvider = require('material-ui/styles/MuiThemeProvider');
var Index = React.createClass({
//childContextTypes: {
// muiTheme: React.PropTypes.object
//},
//
//getChildContext: function() {
// return {
// muiTheme: ThemeManager.getCurrentTheme()
// };
//},
render: function() {
return (
<div className="mui-app-canvas home-page-background">
<RaisedButton
className="login-button"
label="Login"
onTouchTap={ this._handleLoginDialog }
linkButton={ false } />
<LoginDialog
ref="loginDialog"
loginUrl={ this.props.loginUrl } />
</div>
)
},
_handleLoginDialog: function() {
this.refs.loginDialog.show();
}
});
module.exports = Index;
我得到的错误是
TypeError: this.context.muiTheme is undefined
我已经研究过使用MuithemeProvider和包装我的代码,它在文档中显示的方式:
http://www.material-ui.com//开始/使用
但是我得到一个不同的错误。任何帮助都会很感激。
讨论后的解决方案如下
Material-ui/styles/getMuiTheme.js是从ES2015源代码编译而来的,并且这个函数是默认导出的。
与@activatedgeek和@robertkelp讨论后编辑代码
var React = require('react'),
mui = require('material-ui'),
LoginDialog = require('./login-dialog.jsx'),
RaisedButton = mui.RaisedButton,
MuiThemeProvider = require('material-ui/styles/MuiThemeProvider'),
getMuiTheme = require('material-ui/styles/getMuiTheme').default,
darkBaseTheme = require('material-ui/styles/baseThemes/darkBaseTheme');
var Index = React.createClass({
getChildContext: function() {
return {
muiTheme: getMuiTheme(darkBaseTheme)
};
},
childContextTypes: {
muiTheme: React.PropTypes.object
},
render: function() {
return (
<div className="mui-app-canvas home-page-background">
<RaisedButton
className="login-button"
label="Login"
onTouchTap={ this._handleLoginDialog }
linkButton={ false } />
<LoginDialog
ref="loginDialog"
loginUrl={ this.props.loginUrl } />
</div>
)
},
_handleLoginDialog: function() {
this.refs.loginDialog.show();
}
});
module.exports = Index;
这是一个基本组件BaseMUI.jsx
import React from 'react';
import getMuiTheme from 'material-ui/styles/getMuiTheme';
import darkBaseTheme from 'material-ui/styles/baseThemes/darkBaseTheme';
/**
* Basic theme bookkeeping for Material UI
*/
class BaseMUI extends React.Component {
getChildContext() {
return {
muiTheme: getMuiTheme(darkBaseTheme)
};
}
}
BaseMUI.childContextTypes = {
muiTheme: React.PropTypes.object
};
export default BaseMUI;
现在,您创建的每个新组件,使用以下代码:
import React from 'react';
import BaseMUI from './BaseMUI';
class MyComponent extends BaseMUI {
// you component code here
}
export default MyComponent;
:如果你不想创建一个额外的组件,你需要在你使用Material-UI
组件的每个组件中包含getChildContext
方法
相关文章:
- 为什么我需要在setTimeout中有匿名函数才能使此代码工作
- ajax代码工作时,使用javascript禁用html中的链接
- Javascript 新手到忍者无法让书籍代码工作
- 设计代码工作流程
- 在 Java 脚本中使用追加时 HTML 标记不起作用,但在执行硬编码时 html 代码工作正常
- 如何使以下 JavaScript 代码工作并生成 ID 为 “myDivId” 的元素内的名称和年龄列表:
- 函数停止代码工作
- 如何使替换代码工作
- 我无法让这个高图表代码工作,有谁知道为什么它不起作用
- 代码工作 jsfiddle 不适用于 dreamweaver
- jQuery Keyup 不能从代码工作,而是从 Chrome.console 工作
- Web服务器代码工作不正常
- 求和代码工作不正常
- 启用JS评测时,JavaScript代码工作得更快?什么
- 为什么获胜't这个极其简单的Javascript代码工作
- 我的Javascript代码工作不正常
- js代码工作是JSfiddle,但不是在我的浏览器
- 我有反应标签代码工作完美,但我需要改变html结构
- JQuery登录如果语句代码工作不正常则注销
- 我如何使这段代码工作自定义'Facebook Like Box'