setState 不适用于多个 onClick 函数
setState is not working with multiple onClick function
我有一个奇怪的问题,并且已经尝试调试了几个小时,仍然找不到原因。
我有一个 onClick 按钮,用于处理其他 2 个功能,一些奇怪的原因是如果我有 2 个功能,setState 将无法工作,如果我只保留一个功能,setState 将工作,但我需要两个功能。
Here's my code
(当我在这里重现这个问题时,它似乎有效,但样本没有更新 API,它只是改变了状态)
感谢您的帮助!
class RecipeReviewCard extends React.Component {
constructor(props) {
super();
this.state = {
expanded: false,
in: false,
text: false
};
}
handleClick = () => {
this.setState(state => ({ expanded: !state.expanded }));
};
/* If I comment out this one, first setState will work */
handleClick = e => {
this.setState({ in: !this.state.in });
/* This come from parent props to update API */
this.props.updateThing(e.target.value)
};
<Button
className={classes.button}
onClick={e => this.handleClick()}
>
在你的构造函数中,你应该调用 super(props);
参见:https://overreacted.io/why-do-we-write-super-props/
在您的 Button
中 - 您没有将事件对象传递给事件处理程序。
<Button
className={classes.button}
onClick={e => this.handleClick(e)} // note the e here.
>
因为你的 handleClick
函数已经绑定到你的组件实例,你应该直接将它提供给 onClick
处理程序而无需编写箭头函数,如下所示:
<Button
className={classes.button}
onClick={this.handleClick}
>
我有一个奇怪的问题,并且已经尝试调试了几个小时,仍然找不到原因。 我有一个 onClick 按钮,用于处理其他 2 个功能,一些奇怪的原因是如果我有 2 个功能,setState 将无法工作,如果我只保留一个功能,setState 将工作,但我需要两个功能。
Here's my code (当我在这里重现这个问题时,它似乎有效,但样本没有更新 API,它只是改变了状态)
感谢您的帮助!
class RecipeReviewCard extends React.Component {
constructor(props) {
super();
this.state = {
expanded: false,
in: false,
text: false
};
}
handleClick = () => {
this.setState(state => ({ expanded: !state.expanded }));
};
/* If I comment out this one, first setState will work */
handleClick = e => {
this.setState({ in: !this.state.in });
/* This come from parent props to update API */
this.props.updateThing(e.target.value)
};
<Button
className={classes.button}
onClick={e => this.handleClick()}
>
在你的构造函数中,你应该调用 super(props);
参见:https://overreacted.io/why-do-we-write-super-props/
在您的 Button
中 - 您没有将事件对象传递给事件处理程序。
<Button
className={classes.button}
onClick={e => this.handleClick(e)} // note the e here.
>
因为你的 handleClick
函数已经绑定到你的组件实例,你应该直接将它提供给 onClick
处理程序而无需编写箭头函数,如下所示:
<Button
className={classes.button}
onClick={this.handleClick}
>