我不熟悉类型脚本,我正在尝试使用usestatehook和类型脚本在react中设置状态。
const intialState: State ={
items: [],
value: "",
error: null
}
const [data, setData]= useState([intialState]);
return (
<>
{
data.items.map(x) => (
//my html component to be displayed.
)
}
</>
)
但是我得到了下面的错误。谁能告诉我。
您需要为useState指定类型。因为它是状态对象的数组,所以可以像
const [data, setData]= useState<State[]>([intialState]);
还要确保为州的对象定义类型
interface ErrorType {
status: Number // more keys and their types here
}
interface MyDataType {
items: ItemType[],
error: ErrorType | null,
value: string,
}
发布您可以与useState一起使用的内容,如
const [data, setData]= useState<MyDataType[]>([intialState]);
数据是一个对象数组,更新状态时需要合并这些值。为此,可以使用函数setState
var updatedDataObj = { items: ["a","b","c"], error: "404", value: "xyx", };
setData(prevData => [...prevData, updatedDataObj]);
我想这就是你想要达到的。确保正确定义状态类型,而不是从其他包导入
interface State {
items: any[];
value: string;
error: string | null;
}
const MyComponent: (props) => {
const intialState: State ={
items: [],
value: "",
error: null
}
const [data, setData] = useState(intialState)
return (
<>
{
data.items.map(x) => (
//my html component to be displayed.
)
}
</>
)
}
首先,我们应该检查State
和初始状态
对象之间是否存在接口不匹配。如果您可以发布State
的类型定义,将会有所帮助。
此外,您应该为useState
钩子提供State[]
的泛型类型参数。
const [data, setData]= useState<State[]>([intialState]);
我有一个打字错误: 类型“(element:Conversation)=>void”的参数不可赋给类型“(value:Conversations,index:number,obj:Conversation[])=>boolean”的参数。不能将“void”类型赋给“boolean”类型。 这个错误是什么意思?提前谢谢你。
将以下代码转换为typescript时出错。 错误TS2339:属性样式在元素类型上不存在。 当我为如下相同的值分配所需值时 那么误差在元素上,那就是 错误TS2322:类型“Element | null”不可分配给类型“{style:any;}”。类型“null”不可分配给类型“{style:any;}”。
这是一个类中的函数,允许你双击和单击手势。它在Swift 2.3中运行良好,但在转换到Swift 3后,它抛出了一些错误。我怎么也想不明白。我评论了它们发生的地方。
在我的班级中,我有一个属性: 并希望将其设置为: 设置此设置时,我会得到错误
这是我的水果 现在我正在导入另一个typescript文件中的fruit.ts。这是我的 当我做的时候 我得到一个错误: 类型“string”不能分配给类型“orange”“apple”“banana”“ 如何将字符串赋给自定义类型fruit的变量?
这是我运行时得到的结果。我使用的是ionic4版本的Angular 8。