【发布时间】:2019-09-11 16:47:42
【问题描述】:
我正在使用 Material-ui withStylers 和 defaultProps 创建一个组件,但是当我尝试使用该组件的道具时,在样式对象中,我永远不会获得我的默认道具的值,如果它只获取该值传递给组件。 我的组件结构是这样的:
import React from "react";
import PropTypes from "prop-types";
import { withStyles } from "@material-ui/core";
const styles = theme => ({
ClassTest: {
anyAttr: props => console.log(props)
}
});
const Test = ({classes}) => {
return (
<span className={classes.ClassTest}/>
);
};
Test.defaultProps = {
val2: "hey"
};
Test.propTypes = {
val1: PropTypes.bool.isRequired,
val2: PropTypes.string,
};
export default withStyles(styles, { withTheme: true })(Test);
我是这样使用的
<Test val1="Hello">
我希望控制台日志显示如下内容:
{
classes: {...},
val1: "Hello",
val2: "hey"
}
但是,我得到了这个
{
classes: {...},
val1: "Hello"
}
如果我这样调用组件:
<Test val1="Hello" val2="hey">
我明白了:
{
classes: {...},
val1: "Hello",
val2: "hey"
}
那么,考虑到 defaultProps,样式对象不应该给出道具的值吗?我做得对还是错过了什么?
我正在使用以下版本:
"@material-ui/core": "^4.3.0",
"react": "^16.8.6",
我基于文档的这一部分
https://material-ui.com/styles/basics/#adapting-based-on-props
【问题讨论】:
标签: javascript reactjs material-ui