我正在学习一个教程,他们设置了一个名为static objectdefaultprops,将其设置为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,因为我相当确定大写是重要的,但是如果有人想纠正我,我很乐意删节。

10-06 08:22