最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

reactjs - Why aren't defaultProps applied to my React functional component? - Stack Overflow

programmeradmin2浏览0评论

I'm working on a React project and attempting to use defaultProps with a functional component. However, when I don't explicitly pass props, the default values are not being applied.

Course component:

function Course(props) {
    return (
      <div className={Styles.card}>
      <img src={props.image} alt="" />
      <h2>{props.name}</h2>
      <p>{props.price}</p>
    </div>
    );
}

Course.defaultProps = {
    image: image1,
    name: "Default Course",
    price: "1 Like + 1 Subscribe",
};

export default Course;

App component:

function App() {
    return (
        <>
            <Course name="HTML" price="$200" image={image1} />
            <Course name="CSS" price="$250" image={image2} />
            <Course name="JavaScript" price="$500" image={image3} />
            <Course />
        </>
    );
}
export default App;

I'm working on a React project and attempting to use defaultProps with a functional component. However, when I don't explicitly pass props, the default values are not being applied.

Course component:

function Course(props) {
    return (
      <div className={Styles.card}>
      <img src={props.image} alt="" />
      <h2>{props.name}</h2>
      <p>{props.price}</p>
    </div>
    );
}

Course.defaultProps = {
    image: image1,
    name: "Default Course",
    price: "1 Like + 1 Subscribe",
};

export default Course;

App component:

function App() {
    return (
        <>
            <Course name="HTML" price="$200" image={image1} />
            <Course name="CSS" price="$250" image={image2} />
            <Course name="JavaScript" price="$500" image={image3} />
            <Course />
        </>
    );
}
export default App;
Share Improve this question asked Mar 15 at 10:16 M.A.AsardeenM.A.Asardeen 31 silver badge3 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 1

Because Component.defaultProps is now deprecated and the React team recommend using the JavaScript defaultValue instead. This question is similar to the question asked here:

Unable to render/see the default value of a prop in React

In your case, you would need to get rid of the Course.defaultProps and adjust your code as follows:

function Course({image = image1, name = "Default Course", price = "1 Like + 1 Subscribe"}) {
    return (
      <div className={Styles.card}>
      <img src={image} alt={name} />
      <h2>{name}</h2>
      <p>{price}</p>
    </div>
    );
}

export default Course;
发布评论

评论列表(0)

  1. 暂无评论