我正在学习打字稿,并试图从 Microsoft Fluent UI 实现一个detailList组件,但我遇到了一些麻烦:
Type '(ev: React.MouseEvent<HTMLElement>, checked: boolean) => void' is not assignable to type '(event: MouseEvent<HTMLElement, MouseEvent>, checked?: boolean | undefined) => void'.
在代码中,单击切换按钮时会引用一个名为 _onChangeCompactMode 的函数
private _onChangeCompactMode = (ev: React.MouseEvent<HTMLElement>, checked: boolean): void => {
this.setState({ isCompactMode: checked });
这是它被引用的地方:
<Fabric>
<div className={classNames.controlWrapper}>
<Toggle
label="Enable compact mode"
checked={isCompactMode}
onChange={this._onChangeCompactMode}
onText="Compact"
offText="Normal"
styles={controlStyles}
/>
...
</Fabric>
我通过将此行更改为此来解决此onChange={this._onChangeCompactMode}
问题onChange={() => this._onChangeCompactMode}
我不确定为什么这使它起作用。我的理解是,我传递了一个函数引用。但是为什么它不能按原样工作() =>
这里还是新的,所以欢迎有建设性的反馈。