我过去曾在一些测试项目中使用过state和setState,但现在我正在开发一个新项目,当我this.state = new ProductDto("some product name");
时,我收到错误" {{ 1}}"
当我也Cannot convert type ProductDto to type {(): any;(): any}
时,我收到错误:
this.setState(product);
Supplied parameter do not match any signature of call target because no overload accepts one parameters.Candidates are:
K<any>() => (void)
我的代码看起来像这样。
K<any>() => (void)
我正在使用class ProductDto {
constructor(name?: string) {
this.name = name;
}
name: string;
}
class Product extends React.Component<any, ProductDto> {
constructor() {
super();
this.state = new ProductDto("some product name");
}
handleChangeProduct(product: ProductDto) {
this.setState(product);
}
...
}
并且setState.ts文件中的setState定义如下所示
typescript: "^2.2.1", @types/react: "^15.0.13" and react": "^15.4.2"
setState<K extends keyof S>(f: (prevState: S, props: P) => Pick<S, K>, callback?: () => any): void;
。
任何有关如何使这些工作的帮助将不胜感激。谢谢。
答案 0 :(得分:3)
React状态必须是一个对象。 setState
接受一个对象或函数,它返回一个对象作为第一个参数。话虽这么说,状态对象可以包含类(函数)。
在您的情况下,您可以按如下方式设置状态
this.state = { product: new ProductDto("some product name") };
然后更新它
this.setState({ product });
您可以在此处详细了解反应状态:https://facebook.github.io/react/docs/state-and-lifecycle.html