我正在尝试使用对象文字设置 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/

10-13 21:27