【发布时间】:2017-12-14 15:50:28
【问题描述】:
我有一个用 TypeScript 编写的 React 组件:
class App extends React.Component<props> {
constructor(props) {
super(props);
this.treeNavElement = this.treeNavElement.bind(this);
}
treeNavElement() {
return (
<div></div>
)
}
render() {
return (
<div>
{
this.props.NavDataTree.map(function(elem) {
return <div key={elem.id} onClick={this.treeNavElement}>{elem.name}</div>
}, this)
}
</div>
)
}
}
export default App;
我的问题是打字稿编译器对我大喊大叫,因为这行:
return <div key={elem.id} onClick={this.treeNavElement}>{elem.name}</div>
说:
[ts] 'this' 隐含类型 'any' 因为它没有类型注释。
在 map 函数之外,在 map 的第二个参数和 this.props 中可以正常工作,但在 onClick 内部 this 丢失了。
如果我在tsconfig.json 中设置"noImplicitThis": false 很好,但我想知道是否有办法在不关闭implicitthis 的情况下解决这个问题?
【问题讨论】:
-
如果使用箭头函数会怎样?
-
同理。
-
@Explosino Pills 的意思是
...map((elem) => { ... }) -
我知道他的意思,这并没有改变
this在编译时在map内部是未知的。再说一遍:这是一个编译时问题,用any核对this和运行时零问题。 -
抱歉,这适用于
this,但现在出现了不同的错误。
标签: reactjs typescript