2015-09-20 62 views
0

我有一個簡單的反應,我送一個布爾值道具組件喜歡<MenuItem active={notificationMenu.shown} />
但道具沒有得到改變組件內部,並且總是正確的,即使我通過它的元素defaultProps覆蓋delevert道具

@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> 
    ) 
    } 
    } 
} 
+0

很難看出爲什麼沒有看到它的父(S),你確定你將props.active作爲'false'傳遞,你是否從渲染方法登錄? – Eelke

+0

是的,我已經嘗試登錄渲染,它不會改變,並在一些情況下im傳遞false,但它沒有反映在組件 – VeXii

+0

沒關係,使調試更容易添加一些文本到'li',可能是css變化不明顯。 – Eelke

回答

1

的問題,在這Menu父在那裏循環訪問this.props.children並沒有採用普及的操作{...this.props}。所以我在那裏壓倒一切道具爲未定義,然後defaultProps踢英寸

romseguy的回答讓我想再次檢查所有父組件

1

可能是Radium的問題,因爲您的代碼工作正常,如演示here

React.render(<MenuItem active={false}>some text</MenuItem>, document.getElementById('app'));