0

我有一个简单的反应组件,我发送一个 bool 道具来喜欢<MenuItem active={notificationMenu.shown} />
,但道具不会在组件内部改变,即使我在元素上传递它也总是正确的

@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]}>&nbsp;</li>
      )
    }
  }
}
4

2 回答 2

2

那个Menu父级迭代this.props.children并且没有使用传播操作的问题{...this.props}。所以我将道具覆盖为 undefined 然后 defaultProps 开始了。

romseguy 的回答让我想到再次检查所有父组件

于 2015-09-21T09:10:24.877 回答
1

可能是 Radium 的问题,因为您的代码工作正常,如此处所示

React.render(<MenuItem active={false}>some text</MenuItem>, document.getElementById('app'));
于 2015-09-20T21:11:42.883 回答