我有一个类组件,另一个类组件作为他的静态属性。现在我切换到一个函数组件,我不知道如何保持静态属性。
class Panel extends React.Component<Props> {
public static Fieldset = PanelFieldset;
}
class PanelFieldset extends React.Component<Props> {
...
}
class App extends React.Component<Props> {
public render() {
return (
<Panel>
<Panel.Fieldset>
...
</Panel.Fieldset>
</Panel>
)
}
}
Run Code Online (Sandbox Code Playgroud)
现在,切换到功能组件:
const Panel: React.FunctionComponent<Props> = (props) => {
Panel.Fieldset = PanelFieldset;
}
Run Code Online (Sandbox Code Playgroud)
但我收到错误:属性 'Fieldset' 在类型 'FunctionComponent'.ts(2339) 上不存在
有什么帮助吗?
我们如何在 React.CreateContext 中使用泛型?
我有这个:
interface Props {
}
export interface SearchContextProps {
dtos: any[];
}
export const SearchContext = React.createContext<SearchContextProps>({
dtos: []
});
const SearchPage: React.FunctionComponent<Props> = (props) => {
const [dtos, setDtos] = React.useState<any[]>([]);
const searchContext = {
dtos: dtos
};
return (
<SearchContext.Provider value={searchContext}>
...
</SearchContext.Provider>
);
}
export default SearchPage;
Run Code Online (Sandbox Code Playgroud)
现在我想使用泛型,所以我会写这样的内容:
interface Props<T> {
}
export interface SearchContextProps<T> {
dtos: T[];
}
export const SearchContext = React.createContext<SearchContextProps<T>>({
dtos: []
});
const SearchPage = <T extends object>(props: Props<T>) …Run Code Online (Sandbox Code Playgroud) CREATE TABLE `categories` (
`idcategories` INT NOT NULL AUTO_INCREMENT ,
`idparent` INT NULL ,
`description` VARCHAR(45) NULL ,
PRIMARY KEY (`idcategories`) );
ALTER TABLE `categories`
ADD CONSTRAINT `FK_idparent`
FOREIGN KEY (`idparent` )
REFERENCES `ilmercatinodelpulcino`.`categories` (`idcategories` )
ON DELETE CASCADE
ON UPDATE CASCADE
, ADD INDEX `FK_idparent` (`idparent` ASC) ;
INSERT INTO `categories` (`idcategories`, `description`)
VALUES (1, 'cat1');
INSERT INTO `categories` (`idcategories`, `idparent`, `description`)
VALUES (2, 1, 'cat1_child');
Run Code Online (Sandbox Code Playgroud)
因此,此表表示一个类别,具有ID和自我指向的父ID.我插入了一个类别cat1和一个子类别cat1_child,其父ID为cat1.
现在,我希望能够将cat1的idcategory从1更改为10,因为我在更新CASCADE上设置了外键,我希望cat1_child的idparent也将设置为10.但当我这样做时:
UPDATE `categories` SET `idcategories`=10 WHERE `idcategories`='1';
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
错误1451:无法删除或更新父行:外键约束失败(
categories,CONSTRAINTFK_idparent …
我有这个代码实际上有效:
<s:iterator value="breadcrumb.links" var="link">
<s:url action='%{#link.url}' var="url" />
<li>
<a href="${url}">${link.name}</a>
</li>
</s:iterator>
Run Code Online (Sandbox Code Playgroud)
我怎么做同样的事情,但用c:foreach而不是s:iterator?
我尝试过:
<c:forEach items="${breadcrumb.links}" var="link">
<s:url action='${link.url}' var="url" />
<li>
<a href="${url}">${link.name}</a>
</li>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
根据标记文件中的TLD或属性指令,属性操作不接受任何表达式
谢谢.
Class A
Class B extends A
Run Code Online (Sandbox Code Playgroud)
public static List<A> doSomething(List<A> items, A item) {
// manipulate items
return items;
}
Run Code Online (Sandbox Code Playgroud)
List<B> items = new ArrayList<B>();
B item = new B();
items = doSomething(items, item);
Run Code Online (Sandbox Code Playgroud)
错误:方法doSomething(List <A>,A)不适用于参数(List <B>,B)
项目被接受,但项目不被接受.为什么我不能这样做?
怎样才是正确的方法?
JSP1链接到JSP2.
JSP2调用一个servlet,它执行一些操作并以以下结尾:
response.sendRedirect(request.getHeader("referer"));
return;
Run Code Online (Sandbox Code Playgroud)
此时我又回到了JSP2.问题是从那里按下浏览器后退按钮,页面只是重新加载自己而不是返回到JSP1.这是正确的,因为sendRedirect会在历史记录中添加一个条目.
但是我想回到JSP1.有小费吗?