는 내 기능 컴포넌트 중 하나에 onClick
이벤트가 :이 <BreadCrumbs>
구성 요소로 인해 작동하지 않습니다이벤트, 타이프
<BreadCrumbs level={this.state.levels} changeLevel={this.changeLevel}/>
, 타이프 스크립트 컴파일러 (return <span>
줄에) 오류와 함께 실패합니다
[ts]
Type '{ key: number; onClick: Function; children: string; }' is not assignable to type 'DetailedHTMLProps<HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>'.
Type '{ key: number; onClick: Function; children: string; }' is not assignable to type 'HTMLAttributes<HTMLSpanElement>'.
Types of property 'onClick' are incompatible.
Type 'Function' is not assignable to type '((event: MouseEvent<HTMLSpanElement>) => void) | undefined'.
Type 'Function' is not assignable to type '(event: MouseEvent<HTMLSpanElement>) => void'.
Type 'Function' provides no match for the signature '(event: MouseEvent<HTMLSpanElement>): void'.
(JSX attribute) onClick: Function
그러나, 나는이 내 코드를 수정하는 경우 :
const BreadCrumbs: React.SFC<{level: Array<string>, changeLevel: Function}> = ({level, changeLevel}) => {
function something(i: number) {
changeLevel(i);
}
return (
<div>
{
level.map(function(elem, i) {
return <span key={i} onClick={something.bind(this, i)}>{elem}</span>
})
}
</div>
)
}
export default BreadCrumbs;
모든 것이 잘 작동합니다. 첫 번째 버전이 작동하지 않는 이유는 무엇입니까?