对于由React和TypeScript创建的这样一个小组件。如何使用React TypeScript 2.0更改状态?
interface Props {
}
interface State {
isOpen: boolean;
}
class App extends React.Component<Props, State> {
constructor(props: Props) {
super(props);
this.state = {
isOpen: false
};
}
private someHandler() {
// I just want to turn on the flag. but compiler error occurs.
this.state.isOpen = true;
this.setState(this.state);
}
}
当我试图升级TypeScript 1.8到2.0,然后我得到像下面的编译器错误。
error TS2540: Cannot assign to 'isOpen' because it is a constant or a read-only property.
我想也许是由这个变化引起的。
,所以我只是想打开标志。
我该怎么办?有谁知道解决方法?
谢谢。
更新
快速解决方法就像下面这样做。
this.setState({ isOpen: true });
这是使用某种形式的像打字稿或输入做出反应体系的好处典型例子。它捕获这样的事情,并帮助您编写正确的,惯用的React代码。 – GregL