defaultProps 覆盖 delevert 道具
defaultProps overrides delevert props
我有一个简单的 React 组件,我发送了一个 bool 属性来点赞 <MenuItem active={notificationMenu.shown} />
但是 prop 不会在组件内部发生变化,并且即使我将它传递给元素也始终为真
@Radium
export class MenuItem extends Component {
styles = {
hidden: {
listStyleType: "none"
}
}
static propTypes = {
active: React.PropTypes.bool.isRequired
}
static defaultProps = {
active: true
}
render() {
if(this.props.active) {
return (
<li style={this.props.style}>
{this.props.children}
</li>
)
} else {
return (
<li style={[this.styles.hidden, this.props.style]}> </li>
)
}
}
}
可能是 Radium 的问题,因为您的代码工作正常,如 here.
所示
React.render(<MenuItem active={false}>some text</MenuItem>, document.getElementById('app'));
Menu
父级迭代 this.props.children
而未使用扩展操作 {...this.props}
的问题。所以我在哪里将 props 覆盖为 undefined 然后 defaultProps 开始。
romseguy 的回答让我考虑再次检查所有父组件
我有一个简单的 React 组件,我发送了一个 bool 属性来点赞 <MenuItem active={notificationMenu.shown} />
但是 prop 不会在组件内部发生变化,并且即使我将它传递给元素也始终为真
@Radium
export class MenuItem extends Component {
styles = {
hidden: {
listStyleType: "none"
}
}
static propTypes = {
active: React.PropTypes.bool.isRequired
}
static defaultProps = {
active: true
}
render() {
if(this.props.active) {
return (
<li style={this.props.style}>
{this.props.children}
</li>
)
} else {
return (
<li style={[this.styles.hidden, this.props.style]}> </li>
)
}
}
}
可能是 Radium 的问题,因为您的代码工作正常,如 here.
所示React.render(<MenuItem active={false}>some text</MenuItem>, document.getElementById('app'));
Menu
父级迭代 this.props.children
而未使用扩展操作 {...this.props}
的问题。所以我在哪里将 props 覆盖为 undefined 然后 defaultProps 开始。
romseguy 的回答让我考虑再次检查所有父组件