【问题标题】:Type Void is Not Assignable to Type Boolean (React/Typescript)类型 Void 不可分配给布尔类型(React/Typescript)
【发布时间】:2019-06-07 12:41:28
【问题描述】:

我收到一个错误,我想在 Change 上发布一个开关布尔值。我正在使用 React/Typescript... 我想在这里做的事情是在 handleChange() 函数中发送一个布尔值的发布请求,我该怎么做?

我得到的当前错误是Type 'void' is not assignable to type '((event: ChangeEvent<HTMLInputElement>, checked: boolean) => void) | undefined'

interface IState {
  application?: Map<{}, {}>;
  hasChanged?: boolean;
  checkedA?: boolean;
}



 <div className={classes.switchContainer}>
                <FormGroup row>
                    <FormControlLabel
                      control={
                        <Switch
                          checked={this.state.checkedA}
                          onChange={this.handleChange()}
                          value="checkedA"
                        >Toggle</Switch>
                        }label="YES"
                        />
                  <Typography color="secondary" variant="body1" className={classes.toggleQuestions}>Is the Mentor information complete?</Typography>
                </FormGroup>
              </div>

 @autobind
  private handleChange() {
    console.log("checkedA")
  }

【问题讨论】:

  • 只是一个小注解,没有必要使用自动绑定注释(除非它是 Angular...)。为了正确绑定this,您只需将您的方法定义如下private readonly handleChange = () =&gt; {/* do something */};,它将自动在lambda 主体中绑定this

标签: javascript reactjs typescript ecmascript-2016


【解决方案1】:

改用 onChange={this.handleChange} 按照您的方式,您正在调用 处理更改并将其返回值(“void”)设置为更改处理程序。在某些情况下,这可能是合适的,但不适用于您的情况。

【讨论】:

  • 明白了,这很有意义。那么我将如何:获取开关输入的所述状态的值,并发送发布请求?
  • dude 它在文档中的字面意思.... handleChange(event) { console.log(event.target.value); } reactjs.org/docs/forms.html
  • 是的,我使用的是打字稿,所以它与文档有点不同。不过谢谢,我会以此作为参考。
猜你喜欢
  • 2020-07-29
  • 1970-01-01
  • 2016-06-24
  • 2022-08-23
  • 2019-10-25
  • 2020-08-16
  • 2018-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多