在这种情况下,我使用 axios 库以及成功和不成功请求的拦截器,以便在出现错误时自动从服务器获取并显示带有错误文本的警报。
因此,我的后端开发人员向我发送了不适合输出到警报的错误消息,认为该消息是我必须自己生成错误,但仅需要来自服务器的内容,以便我了解错误。他是对的吗?或者从后端发送错误消息应该严格类似于response.message并匹配 UI 上向用户显示的错误格式?
我所说的通用错误拦截器看起来是这样的,但是它每次发送给我的错误都在不同的路径上,而且它们的格式不适合向用户显示,并且经常会收到一个包含错误的数组。他做的事正确吗?
因为在这种情况下,我无法使用下面的代码来处理错误
const API = axios.create({
baseURL: '/api/',
responseType: 'json',
headers: { 'cache': 'no-store' },
})
const onFulfilled = (response) => response.data
const onRejected = (error) => {
if (error.response?.status === 500) {
notify(error.response.statusText || ' Internal server error', 'error')
} else if (error.response?.data.message) {
notify(error.response.data.message, 'error')
} else {
notify('Oops something went wrong', 'error')
}
..... and so on
return Promise.reject(error)
}
API.interceptors.response.use(onFulfilled, onRejected)
Run Code Online (Sandbox Code Playgroud) 我有这个代码:
import axios, {AxiosError} from "axios";
try {
some request
} catch(err:AxiosError) {
console.log(error.response) // Doesn't work
console.log(error.response?.data?.message) // Doesn't work
if(error.response?.data?.statusCode === 401) {
logout()
}
}
Run Code Online (Sandbox Code Playgroud)
由于 TypeScript,我无法检查里面的状态代码。如何在不诉诸类型的情况下正确描述错误类型any?我找不到人们如何在 TypeScript 中处理这个错误,也许我遗漏了一些东西。
我有以下 zod 模式,在某些情况下,我想从模式中完全省略一个字段。我不能只是让它成为可选的。我怀疑有某种方法可以直接使用 zod 来实现。有没有办法省略字段或以某种方式预处理模式?
例如,我如何在没有此嵌套字段的情况下使用此架构。
const schema = z.object({
name: z.number(),
age: z.number(),
data: z.array(
z.object({
id: z.string().optional(),
name: z.string().nonempty().optional(),
})
)
});
const test = schema.shape.data //. ??? how can I omit the name field?
type typeTest = z.infer<typeof test>; // just data without name field
Run Code Online (Sandbox Code Playgroud)
我如何省略这个嵌套值?
我有一个组件,在数据检索完成之前显示一个旋转器。但我不从服务器获取数据,而是使用 Dexie 库从 indexedDB 获取数据。我怎么能嘲笑这样的要求。我的代码:
组件内的 useEffect
useEffect(() => {
dispatch(setData())
}, [])
if(isDataLoadng) {
return <Spinner/>
}
return Component
Run Code Online (Sandbox Code Playgroud)
重击动作
import db from '../../indexedDB/db'
export const setData = createAsyncThunk(
`setData`,
async (_, { getState }) => {
const data =await db.data.toArray()
return {data}
}
)
Run Code Online (Sandbox Code Playgroud)
索引数据库文件
import Dexie from 'dexie';
const db = new Dexie("dataDB");
db.version(1).stores({
data: 'id, name,
});
export default db
Run Code Online (Sandbox Code Playgroud)
我的减速机
const initialState = {
data: [],
isDataLoading: true,
}
const crudSlice = createSlice({
name: 'dataReducer', …Run Code Online (Sandbox Code Playgroud) 我有以下架构。
const schema = z.object({
name: z.string().min(1)
})
Run Code Online (Sandbox Code Playgroud)
zod中有什么办法可以获取min中存储的值吗?
const minValue = schema.shape...? // should be 1
Run Code Online (Sandbox Code Playgroud) 当我在同一问题中使用自定义过滤器以及本机和设计过滤器时,我收到下一个错误
Warning: [antd: Table] `FilteredKeys` should all be controlled or not controlled.
Run Code Online (Sandbox Code Playgroud)
创建表时,我可以在 ant design 过滤器上使用自定义过滤器来避免此警告,但也许有一种方法可以以不同的方式避免它,或者这只是库错误。
我发现开发人员说这不是错误并且问题已解决的主题,但为什么我在项目构建和开发中收到红色警告。没关系?
我有下一个对象
const obj = {
name: 'First',
age: 22,
}
Run Code Online (Sandbox Code Playgroud)
该对象有下一个接口
interface ITask {
name: string,
age: number
}
Run Code Online (Sandbox Code Playgroud)
但经过一些数据映射后,我创建了一个像这样的递归对象
const obj = {
name: 'First',
age: 22,
next: {
name: 'Second',
age: 12,
next: { EMPTY OBJECT WHEN END }
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试以这种方式输入这个对象,但它不起作用
type IRecursiveTask = {
[key: string]: IRecursiveTask
} & ITask
Run Code Online (Sandbox Code Playgroud)