我有以下结构:
java.io.IOException: Server returned HTTP response code: 400 for URL: https://lavazzaindia--tst1.custhelp.com/services/rest/connect/latest/tasks/255
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
at com.cloud.task.TaskUpdate.main(TaskUpdate.java:80)
现在我想在实现类中实现export abstract class SomeAbstractClass extends React.Component<any,any>{
protected abstract menuItems: MenuItem[];
}
,例如
menuItems
但编译器抱怨
类型'元素'不能分配给'MenuItem'类型。 “元素”类型中缺少属性“setState”。
我该如何使这项工作? this.menuItems = [<MenuItem/>]; // test purpose it has no props
来自哪里?如果我使用setState
作为一种类型,它就可以正常工作。
键入内容如下所示,而any
是一堆可选字段。
MenuItemProps
来自Material-UI库source。
我正在使用Typescript 2.1.5
有可能吗?
答案 0 :(得分:1)
你在这里混合了两个不同的概念。
首先是你为渲染反应声明的方式和内容。 例如,如果你写:
render()
{
return <MenuItem/>
}
您所做的就是指示以某种方式创建MenuElement类型的对象并进行渲染。注意 - 您不会在此声明或创建任何MenuItem实例。您只描述了要存档的内容。
其次是反应本身,需要你的&#34;描述&#34;并将其转换为浏览器可以运行并创建所描述行为的实际JS代码。
写作时
this.menuItems = [<MenuItem/>]
React会将其转换为以下内容:
this.menuItems = [React.createElement(MenuItem)]
正如您所看到的,还没有创建MenuItem
的实例。
如果您确实希望使用组件的实例,那么可以在稍后阶段(请参阅here更多信息)
你应该尽量不要&#34;存储&#34;渲染之外的元素(如<MenuItem>
)。只有在想要描述所需结构时才创建它们。相反,在您的this.menuItems字段中,您应该存储稍后在呈现阶段将帮助您声明必要组件结构的数据。