Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将GraphQL错误存储为字符串_Javascript_Reactjs_Typescript_Graphql_Apollo - Fatal编程技术网

Javascript 将GraphQL错误存储为字符串

Javascript 将GraphQL错误存储为字符串,javascript,reactjs,typescript,graphql,apollo,Javascript,Reactjs,Typescript,Graphql,Apollo,我有一张登录表。当点击submit按钮时,我会通过GraphQL后端检查电子邮件和密码是否正确。如果是,则返回令牌并将其存储在本地存储器中。有时会出现错误,如: “密码不正确”或“用户不存在”。 有没有办法将这些错误存储为字符串,以便以后使用条件渲染显示它们 这就是我的突变的样子: function submitForm(LoginMutation: any) { const { email, password } = state; if(email && pas

我有一张登录表。当点击submit按钮时,我会通过GraphQL后端检查电子邮件和密码是否正确。如果是,则返回令牌并将其存储在本地存储器中。有时会出现错误,如:

“密码不正确”或“用户不存在”。

有没有办法将这些错误存储为字符串,以便以后使用条件渲染显示它们

这就是我的突变的样子:

function submitForm(LoginMutation: any) {
    const { email, password } = state;
    if(email && password){
      LoginMutation({
        variables: {
            email: email,
            password: password,
        },
    }).then(({ data }: any) => {
      localStorage.setItem('token', data.loginEmail.accessToken);
    })
    .catch(console.log)
    }
  }
我用它作为回报

 return (
      <Mutation mutation={LoginMutation}>
        {(LoginMutation: any) => (
        ....)}>
       </Mutation>
)
我尝试过这个,但它从不记录任何内容:

.then(({data, errors}:any) => {
        if (errors && errors.length) {
          console.log('Errors', errors);
          setErrorMessage(errors[0].message);
          console.log('Whats the error', errors[0].message)
        } else {
          console.log('ID: ', data.createUser.id);
        }
      })
    ```
The backend isn't made by me



这取决于您如何设置一些东西,但是,假设您可以在
ShowError
功能中访问
state

使用GraphQL时,错误可能以两种方式发生: 1.网络错误,将在
.catch
中捕获。要处理此问题,您可以在
catch
中以状态存储错误消息,然后从
ShowError
访问它:

。。。
.catch(错误=>{
setState({errorMessage:err.message});
});
  • 作为错误查询的结果,通常返回一个带有
    错误的
    数组的成功响应。要处理此情况,您可以在
    中添加错误检查。然后
  • 。。。
    .然后({data,errors})=>{
    if(errors&&errors.length){
    setState({errorMessage:errors[0].message});
    }否则{
    localStorage.setItem('token',data.loginEmail.accessToken);
    }
    });
    
    您能看看更新的qs吗?我试了2次。但这对我不起作用。如果您不控制后端,则它们可能会将错误作为网络错误返回。你有没有试着在捕获物中添加很多?您在哪里看到您添加的日志(示例错误)?*添加日志,而不是添加很多
    [Log] Error: GraphQL error: Key (email)=(c@c.com) already exists.
    
    .then(({data, errors}:any) => {
            if (errors && errors.length) {
              console.log('Errors', errors);
              setErrorMessage(errors[0].message);
              console.log('Whats the error', errors[0].message)
            } else {
              console.log('ID: ', data.createUser.id);
            }
          })
        ```
    The backend isn't made by me