我试图在这样的无状态组件中切换div的可见性:
const playerInfo = (props) => {
let isPanelOpen = false;
return (
<div onClick={() => isPanelOpen = !isPanelOpen }>Toggle</div>
{isPanelOpen && <div className="info-panel">
{props.children}
</div>}
);
};
Run Code Online (Sandbox Code Playgroud)
我看到isPanelOpen更改为的值true,但是未显示该面板。我认为这是因为这是不会再被调用的无状态函数,因此一旦我们返回jsx,它将具有的值false,并且以后将不会对其进行更新。有没有办法解决这个问题,并避免通过另外4个父级无状态组件将此单个变量作为props粘贴?
我声明了包含以下元素的列表ClassA:
public class SuperList<E> extends ArrayList<ClassA> {
public SuperList<E> getSomeElements() {
SuperList<E> resultList = new SuperList<>();
// creating result list
return resultList;
}
}
Run Code Online (Sandbox Code Playgroud)
我有一节课ClassB:
public class ClassB extends ClassA {
// class definition
}
Run Code Online (Sandbox Code Playgroud)
最后我有SuperListClassB的实例.我希望通过方法从中获取元素getSomeElements()并迭代它:
SuperList<ClassB> bigList;
SuperList<ClassB> elements = bigList.getSomeElements();
for(ClassB element : elements){
// do something
}
Run Code Online (Sandbox Code Playgroud)
但IntelIJ说的是这样的:
不兼容的类型.必需:ClassB.发现:ClassA.
我可以做得好吗?
我有来自npm/@ types类型的javascript库.
我需要对@types进行两次修复,仅适用于我的应用程序,因此我无法将它们合并到DefinitelyTyped存储库中.
我需要:
从界面中删除一个字段.例:
// before changes:
interface A {
a?:string;
b?:string;
c?:string;
}
// after changes:
interface A {
a?:string;
c?:string;
}
Run Code Online (Sandbox Code Playgroud)在界面中的一个字段中添加更多类型.例:
// before changes:
interface B {
a?: C;
}
// after changes:
interface B {
a?: C | D;
}
Run Code Online (Sandbox Code Playgroud)另外,我仍然想从外部存储库下载主要的@types定义.
实现这一目标的最佳方法是什么?
typescript definitelytyped typescript-typings typescript-types