React-Query 通常会返回一些查询状态,例如isLoading
, isError
。该库保证这些布尔值是稳定的。onSuccess
这意味着如果例如检查布尔值,我们可以确定数据存在。然而,这 - 当然 - 对于 TS 编译器来说是不够的。即使在检查之后,它也假定数据可以是undefined
. 让 TS 编译器知道数据存在的最佳方法是什么?
这是文档中的一个示例:
function Todos() {
const { isLoading, isError, data, error } = useQuery('todos', fetchTodoList)
if (isLoading) {
return <span>Loading...</span>
}
if (isError) {
return <span>Error: {error.message}</span>
}
// --> The data is now sure to exist
return (
<ul>
{data.map(todo => ( // --> this will not work with the TS compiler.
<li key={todo.id}>{todo.title}</li>
))}
</ul>
)
}