我正在尝试使用对象文字设置 defaultProp,但一段时间后我意识到 React 类构造函数没有将默认 Prop 与应用的 Prop 合并,所以我最终得到了 defaultProps 文字中任何属性的未定义值尚未包含在应用 Prop 中。有没有办法合并默认 Prop 和应用 Prop ,或者我是否需要将我的对象分解成几个 Prop ?
class Test extends React.Component {
constructor(props) {
super(props);
//props.test is only {one: false}
//props.test.two is undefined
}
render() {
return (<div>render</div>)
}
}
Test.defaultProps = {
test: {
one: true,
two: true
}
}
ReactDOM.render(<Test test={{'one': false}}/>, document.getElementById('#test'));
http://codepen.io/adjavaherian/pen/oYNPLz
最佳答案
React 只对默认 props 和实际 props 进行浅层合并,即嵌套的默认 props 被覆盖而不是合并。这是设计使然。
请参阅 this React issue 了解更多背景和原因以及可能的解决方法:
关于reactjs - React.Component.defaultProps 对象被覆盖,而不是合并?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40428847/