2016-07-07 60 views
-1

我嘗試在用戶單擊菜單時嘗試激活抽屜,但我的解決方案不起作用。你能幫我嗎?在Reactjs中調用父功能(在菜單項中點擊Material-ui激活抽屜)

家長

import React, { Component } from 'react'; 
// Import Appbar 
import AppBar from 'material-ui/AppBar'; 
import Drawer from 'material-ui/Drawer'; 
import LeftMenu from './Left_menu'; 

class Header extends Component { 
    constructor(props) { 
    super(props); 
    this.state = {open: false}; 
    } 
    handleToggle() { 
    this.setState({open: !this.state.open}); 
    } 

    handleClose() { 
     this.setState({open: false}); 
    } 

    render() { 
    return(
     <div> 
     <AppBar 
     title="Log" 
     onLeftIconButtonTouchTap={this.handleToggle.bind(this)} 
     /> 
     <Drawer 
      docked={false} 
      open={this.state.open} 
      onRequestChange={(open) => this.setState({open})} 
     > 
      <LeftMenu handleClose={this.handleClose} /> 
     </Drawer> 
     </div> 
    ); 
    } 
}; 

export default Header; 

兒童

import React, { Component } from 'react'; 
import Drawer from 'material-ui/Drawer'; 
import MenuItem from 'material-ui/MenuItem'; 

class LeftMenu extends Component { 
    constructor(props) { 
    super(props); 
    } 
    render() { 
    return (
     <div> 
      <MenuItem onTouchTap={(event) => this.props.handleClose(event)}>Menu Item</MenuItem> 
      <MenuItem onTouchTap={(event) => this.props.handleClose(event)}>Menu Item 2</MenuItem> 
     </div> 
    ); 
    } 
} 

export default LeftMenu; 

我收到一條消息:類型錯誤:this.setState不是一個函數

我使用流星+陣營+ MaterialUI

謝謝

回答

1

您在render沒有setState應該採取邏輯出onRequestChange,就像你有handleTogglehandleClose完成:

<Drawer 
     docked={false} 
     open={this.state.open} 
     onRequestChange={(open) => this.setState({open})} // this.handleRequest?? 
    > 
0

解決。

在家長

<LeftMenu handleClose={this.handleClose.bind(this)} /> 

兒童

<MenuItem onTouchTap={this.props.handleClose}>Menu Item</MenuItem> 
<MenuItem onTouchTap={this.props.handleClose}>Menu Item 2</MenuItem> 

還是要謝謝你。