我正在学习一个教程,他们设置了一个名为static object
的defaultprops
,将其设置为this.props
后可以在同一组件中使用,这为什么可行,我的意思是static defaultProps
的功能是什么?在React中发挥作用。
class TestComponent extends Component {
static defaultprops = {
food: ["goatmeat", "yam"]
}
render() {
let categories = this.props.defaultprops.food.map(foods => {
return <option key={foods}>{foods}</option>
});
let {test} = this.props;
return (
<p>
{this.props.test}
</p>
);
};
}
最佳答案
默认道具很好,不必在将所有道具传递给组件时指定所有道具。顾名思义,它允许您为道具设置漂亮的默认值,即使没有传入覆盖值也可以使用它。请记住,省略道具将导致使用默认值,而传递null将导致使用null值。
可以找到更多信息here。
编辑
要更明确地回答所提出的问题:
这是可能的,因为这就是React的工作方式。这是内置功能,为程序员和逻辑上的方便。
对于您示例中的TestComponent
,请想象它已在另一个组件中使用。如果仅使用<TestComponent />
,则组件的food
值为["goatmeat","yam"]
。但是,您可以随时通过在调用prop时为prop传递一个不同的值来覆盖它。例如,您可以使用<TestComponent food={["cheese", "eggs", "cabbage"]}/>
。这将导致该组件的实例的food
值为["cheese", "eggs", "cabbage"]
。
我认为也应该指出它应该是defaultProps
而不是defaultprops
,因为我相当确定大写是重要的,但是如果有人想纠正我,我很乐意删节。