我正在尝试为获取对象的组件设置默认道具。问题是我需要将默认道具应用于对象的丢失属性,但是它仅在未设置整个对象时才起作用:
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
}
有什么想法吗?
答案 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>
)
}