小编Dev*_*low的帖子

是否所有错误消息都应该以可以向用户显示的形式来自后端?

在这种情况下,我使用 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)

javascript node.js reactjs

21
推荐指数
1
解决办法
1万
查看次数

如何在 TypeScript 的 catch 块中输入错误属性?

我有这个代码:

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 中处理这个错误,也许我遗漏了一些东西。

typescript reactjs

16
推荐指数
1
解决办法
1万
查看次数

如何从嵌套zod方案中省略某些值?

我有以下 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)

我如何省略这个嵌套值?

reactjs react-hook-form zod

10
推荐指数
1
解决办法
2万
查看次数

如何在反应测试库/笑话中模拟对 IndexedDB 的请求?

我有一个组件,在数据检索完成之前显示一个旋转器。但我不从服务器获取数据,而是使用 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)

reactjs react-testing-library

6
推荐指数
0
解决办法
1053
查看次数

如何获取zod中min()、max()内的值?

我有以下架构。

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)

typescript reactjs zod

4
推荐指数
1
解决办法
3271
查看次数

如何避免警告:[antd:Table]`FilteredKeys`应该全部受控或不受控

当我在同一问题中使用自定义过滤器以及本机和设计过滤器时,我收到下一个错误

Warning: [antd: Table] `FilteredKeys` should all be controlled or not controlled.
Run Code Online (Sandbox Code Playgroud)

创建表时,我可以在 ant design 过滤器上使用自定义过滤器来避免此警告,但也许有一种方法可以以不同的方式避免它,或者这只是库错误。

我发现开发人员说这不是错误并且问题已解决的主题,但为什么我在项目构建和开发中收到红色警告。没关系?

reactjs antd ant-design-pro

3
推荐指数
1
解决办法
2683
查看次数

如何在打字稿中输入递归对象?

我有下一个对象

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)

typescript

2
推荐指数
1
解决办法
2041
查看次数