我有一个使用默认道具的React组件:
class MyComponent extends Component {
constructor(props) {
console.log('props', props);
super(props);
// rest of code here
}
MyComponent .defaultProps = {
__TYPE: 'MyDateRange',
};
当我使用该组件时,没有传递任何道具,props
的控制台日志会显示默认的道具,就像应该的那样。
现在,当我想传递一个额外的道具(在这种情况下为函数)时,像这样:
<MyComponent onEnterKey={() => console.log('snuh')}/>
props
的控制台日志仅显示onEnterKey
功能。
我该怎么做才能允许MyComponent
使用默认的道具和接受功能?我尝试向MyComponent
的构造函数添加另一个参数,但这不起作用。
答案 0 :(得分:2)
我尝试过了,并且正在工作:
import React from "react";
import { render } from "react-dom";
class MyComponent extends React.Component {
constructor(props) {
console.log("props", props);
super(props);
}
render() {
return null;
}
}
MyComponent.defaultProps = {
__TYPE: "MyDateRange"
};
render(
<MyComponent onEnterKey={() => console.log("snuh")} />,
document.getElementById("app")
);
您可以在这里看到它:https://codesandbox.io/s/wkw0k0j5o8
答案 1 :(得分:1)
您可以像这样将defaultProp
放在构造函数之外的类上:
class MyComponent extends Component {
constructor(props) {
console.log("props", props);
super(props);
}
render() {
return <div> test </div>;
}
}
MyComponent.defaultProps = {
__TYPE: "MyDateRange"
};
或者,您可以将defaultProps
作为类的静态属性:
class MyComponent extends Component {
static defaultProps = {
__TYPE: "MyDateRange"
};
constructor(props) {
console.log("props", props);
super(props);
}
render() {
return <div> test </div>;
}
}