onclick道具不能使用Material UI?

时间:2018-05-08 16:38:29

标签: javascript reactjs react-props

这是我在React.js上的情况

我在App.js上有一个函数调用selectNumberOfPeople,

然后在我的子组件(调用常规)中我有一个按钮:

<button className="selectedNumberOfPeopleButton" onClick={this.selectedNumberOfPeople} value="1">
      1
</button>

在点击时显示控制台中的值。

完美无缺。

我想现在使用Material UI中的一个按钮,所以我将我的按钮替换为:

<RaisedButton className="selectedNumberOfPeopleButton" 
    onClick={this.props.selectedNumberOfPeople}
    value="1" 
    label="1" 
    labelPosition="before"
    primary={true}
/>

但是在使用它时,控制台上的值不再显示。 。

虽然函数在父组件中,但我通过它传递:

<General selectNumberOfPeople={this.selectNumberOfPeople} selectedPanel={this.showPanelAndHideOthers} />

我尝试更新我的子组件(General.js),如:

<RaisedButton selectNumberOfPeople={this.props.selectNumberOfPeople}
    className="selectedNumberOfPeopleButton" 
    onClick={this.props.selectedNumberOfPeople}
    value="1" 
    label="1" 
    labelPosition="before"
    primary={true}
/>

但它还没有用......

供您参考,

selectNumberOfPeople在App.js中为

selectNumberOfPeople(value) {
console.log('select number of people');
// update the state and provide a callback handler to be called after the state is updated.
// referencing the state before the call back function
// () => {
//   console.log(this.state.numberOfPeople)
// })
// will leave the state with the same value as before the setState function is called.
this.setState(
  {
    numberOfPeople: value,
  },
  () => {
    console.log(this.state.numberOfPeople);
  }
);

}

和我的general.js(子组件)

selectedNumberOfPeople(e) {
  this.props.selectNumberOfPeople(e.target.value);

  const list = document.getElementsByClassName('selectedNumberOfPeopleButton');
  for (let i = 0; i < list.length; i++) {
    list[i].classList.remove('hover');
  }

  this.toggleSelectedButtonState(e);
}

有没有人对我做错了什么有任何指导?

这将超级!!

非常感谢!

2 个答案:

答案 0 :(得分:0)

使用this.props.selectNumberOfPeople而非selectedNumberOfPeople

 <RaisedButton
   className="selectedNumberOfPeopleButton" 
   onClick={this.props.selectNumberOfPeople}
   value="1" 
   label="1" 
   labelPosition="before"
   primary={true}
/>

答案 1 :(得分:0)

你也可以试试      onClick={()=>this.props.selectedNumberOfPeople}