为对象的一个​​属性设置默认道具

时间:2019-05-06 07:41:42

标签: reactjs react-proptypes

我正在尝试为获取对象的组件设置默认道具。问题是我需要将默认道具应用于对象的丢失属性,但是它仅在未设置整个对象时才起作用:

const App = ({data}) =>{
    return(
        <div></div>
    )
}

App.defaultProps = {
    data : {
        C : "blah"
    }
}

App.propTypes = {
    data : PropTypes.shape({
        A : PropTypes.string.isRequired,
        B : PropTypes.string.isRequired,
        C : PropTypes.string.isRequired,
    }).isRequired
}

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

defaultProps不会合并值,而是会替换它。为了解决这个问题,您只需在渲染器本身中执行此操作

const App = ({data}) =>{
    const newData = Object.assign({}, { C : "blah" }, data);
    return(
        <div></div>
    )
}

并以名称newData

使用

答案 1 :(得分:1)

欢迎使用StackOverflow!一个不错的可读解决方案是:

const App = ({data}) =>{
    const defaultData = { C: "blah" }
    const newData = {...defaultData, ...data}
    return(
        <div></div>
    )
}
相关问题