2017-06-03 108 views
-2

的特性“道具”我想要孩子的话,我使用的道具家长的沟通。有一个小问题。当我使用StatusChanged()函数时出现错误。无法读取未定义的错误

还有就是我的父母(App.JS)文件:

class App extends Component { 

    constructor(props) { 
    super(props); 
    this.state = { trackingStatus: true }; 
    } 

    trackingStatusUpdate(data) 
    { 
     console.log(data); 
    } 

    render() { 
    return (
     <div className="App"> 
     <Switcher trackingStatus={this.state.trackingStatus} trackingStatusUpdate={this.trackingStatusUpdate} /> 
     </div> 
    ); 
    } 
} 

并有我的孩子(Switcher.JS)文件:

class Switcher extends Component { 


    constructor(props) { 
     super(props); 
     this.state = { 
      trackingStatus: this.props.trackingStatus 
     }; 
    } 


    statusChanged() 
    { 
     this.props.trackingStatusUpdate(this.state.trackingStatus); 
    } 

    render() { 
     return (
      <div> 
       <h3>Tracking Mode</h3> 
       <label className="switch"> 
        <input type="checkbox" defaultChecked={this.state.trackingStatus} onChange={this.statusChanged} id="switch" /> 
        <div className="slider round"></div> 
       </label> 
      </div> 
     ); 
    } 

} 

Switcher.defaultProps = { 
    trackingStatus: true 
} 

问题是什么?

谢谢。

+0

嵌入您的问题而不是给出一个链接到它的代码。 –

+0

的可能的复制[无法访问做出反应的实例(本)事件处理中(https://stackoverflow.com/questions/29577977/unable-to-access-react-instance-this-inside-event-handler) – Li357

+1

@ ShammelLee我做到了,谢谢。 – Rys

回答

1

您需要绑定trackingStatusUpdate()statusChanged()类的方法...

class App extends Component{ 
    constructor(props){ 
    super(props); 
    this.state = {trackingStatus: true}; 

    this.trackingStatusUpdate = this.trackingStatusUpdate.bind(this); 
    } 

    ... 
} 

class Switcher extends Component{ 
    constructor(props){ 
    super(props); 
    this.state = {trackingStatus: this.props.trackingStatus}; 

    this.statusChanged = this.statusChanged.bind(this); 
    } 

    ... 
} 
+0

非常感谢! – Rys

+0

@令我高兴。很高兴我能帮上忙 :) –

相关问题