我有一个Reaction应用程序,其中有一个创建客户端的页面,从那里我将数据发送到Redux-Toolkit的createAsynkThank,后者将处理请求并将其发送到服务器,在那里它将被保存在数据库中(如果请求成功,它将被保存在store 中).

我希望在由于某种原因(例如:这样的客户端已经存在或无效的邮箱)导致保存失败的情况下,发回错误并将其显示在屏幕上. 有可能吗?

export const newClient = createAsyncThunk('clients/newClient', 
  async ({ name, email, tel }, { getState, dispatch, rejectWithValue }) => {
    if (name && email && tel) {
      $.post(`${URL}/clients/newClient`, { name, email, tel })
      .then( res => {
        dispatch(slice.actions.NewClient({ name, email, tel, _id: res.data.data._id }))
        // return value success
      })
      .catch( err => { 
        // return value err
      })
    } else {
      // return value
    }
  }
)
const setNewClient = () => {
  dispatch(newClient({ name, email, tel }))
    .then(res => console.log(res))
    .catch(err => console.log(err))
}

推荐答案

是的,您可以返回rejectWithValue并返回错误.

示例:

exp或t const newClient = createAsyncThunk(
  'clients/newClient', 
  async ({ name, email, tel }, { getState, dispatch, rejectWithValue }) => {
    try {
      if (name && email && tel) {
        const res = await $.post(
          `${URL}/clients/newClient`,
          { name, email, tel }
        );
        dispatch(slice.actions.NewClient({
          name,
          email,
          tel,
          _id: res.data.data._id
        }));
        // return value success;
      } else {
        // return value
      }
    } catch(err或) { 
      return rejectWithValue(err或); // <-- return rejection w/err或 here
    }
  }
);

然后,UI应该解开已解析的Promise.

const setNewClient = async () => {
  try {
    const res = await dispatch(newClient({ name, email, tel })).unwrap();
    console.log(res);
  } catch(err或) {
    console.log(err或);
  }
}

const setNewClient = () => {
  dispatch(newClient({ name, email, tel })).unwrap()
    .then(res => console.log(res))
    .catch(err => console.log(err));
};

F或 m或e details see:

Javascript相关问答推荐

需要具有多个下拉按钮的帮助

使用jQuery在 bootstrap 网格中添加/删除元素并防止删除第一个元素

验证嵌套 colored颜色 代码的结果

Toast函数找不到其dis

鼠标移动时更新画布

如何访问react路由v6加载器函数中的查询参数/搜索参数

React:未调用useState变量在调试器的事件处理程序中不可用

提交表格后保留Web表格中的收件箱值?

我开始使用/url?q=使用Cheerio

将自定义排序应用于角形数字数组

为什么当我解析一个promise时,输出处于挂起状态?

使用useEffect,axios和useParams进行react测试

在react JS中映射数组对象的嵌套数据

在Three JS中看不到补间不透明度更改效果

如何从网站www.example.com获取表与Cheerio谷歌应用程序脚本

try 使用javascript隐藏下拉 Select

在开发期间,Web浏览器如何运行&qot;.jsx&qot;文件?

OpenAI转录API错误请求

触发异步函数后不能显示数据

在Vercel中部署Next.js项目时获取`ReferenceError:未定义文档`