Reactjs TSX组件阵列,阵列内组件
我试图在tsx中有一个子组件数组,然后在以下代码中将一个实例添加到该数组中:Reactjs TSX组件阵列,阵列内组件,reactjs,typescript,types,components,Reactjs,Typescript,Types,Components,我试图在tsx中有一个子组件数组,然后在以下代码中将一个实例添加到该数组中: import ShoppingList from './ShoppingList'; interface TPState { shoppingLists2: ShoppingList[]; shoplistsums: number[]; sum: number; } class TotalPrice extends React.Component<{}, TPState> { co
import ShoppingList from './ShoppingList';
interface TPState {
shoppingLists2: ShoppingList[];
shoplistsums: number[];
sum: number;
}
class TotalPrice extends React.Component<{}, TPState> {
constructor(props: {}) {
super(props);
this.state = {
shoppingLists2: [ShoppingList],
sum: 0
}
}
从“/ShoppingList”导入ShoppingList;
接口状态{
ShoppingList 2:ShoppingList[];
shoplistsums:编号[];
总和:数字;
}
类TotalPrice.Component{
构造函数(props:{}){
超级(道具);
此.state={
shoppingLists2:[购物清单],
总数:0
}
}
但我得到一个错误,它是不可分配的。
我使用数组在页面中的按钮按下时添加组件,并且像这样添加初始项。
为什么会出错?不确定您会收到什么错误消息,可能有两种情况。首先,您可以指定将
[ShoppingList]
强制转换为类型。此外,您还需要指定所有状态参数
class TotalPrice extends React.Component<{}, TPState> {
public state = {
shoppingLists2: [ShoppingList] as ShoppingList[], // as ShoppingList[] may not be needed but dont know without the error message
sum: 0,
shoplistsums: [] // you were missing this item in your state, proabably what the issue was
}
}
然后你的状态类型
interface TPState {
shoppingLists2: IShoppingList[];
shoplistsums: number[];
sum: number;
}
这一行的ShoppingList是什么?
ShoppingList s2:[ShoppingList]
?哦,很抱歉从“/ShoppingList”导入ShoppingList;ShoppingList是一个数组吗?不,它是一个组件,我希望数组将此类组件保存为typeok,所以将其转换为ShoppingList[]ok如果我添加所有3个状态并不强制转换,那么这就是错误:类型“{shoppingLists2:(typeof ShoppingList)[];总和:数字;ShoppingSums:undefined[];}”不可分配给类型“Readonly”。属性“shoppingLists2”的类型不兼容。类型“(typeof ShoppingList)[]不可分配给类型“ShoppingList[]“.Type'typeof ShoppingList'不可分配给Type'ShoppingList'。Type'typeof ShoppingList'中缺少属性'HandletText'。@jhonathanmyers您需要为您的购物列表定义一个类型。.在您的界面中,您指定它是ShoppingList数组的类型,但实际上它是ShoppingList[]的类型typeof
像这样吗?shoppingList:shoppingList;shoppingList 2:shoppingList[];但这可能不起作用no@jhonathanmyers看看我的编辑。你需要为你的数组定义一个类型。如果你仍然有错误,那么就使用该类型。如果没有可以测试的东西,它将很难修复。你能创建一个代码笔并举例说明它不工作吗?是的,但是如果我有那个接口,我如何添加组件还是吗?我现在正在用另一种方式尝试,也许你可以看看:
interface TPState {
shoppingLists2: IShoppingList[];
shoplistsums: number[];
sum: number;
}