【发布时间】:2021-04-27 01:16:08
【问题描述】:
在我的组件中我正在这样做
//register.svelte
import { gql } from "@apollo/client";
import { mutation } from "svelte-apollo";
import { goto } from "@sapper/app";
import { userStore } from "../stores/userStore";
const REGISTER = gql`
mutation register(
//variables
) {
register(
registerInput: {
//variables
}
) {
//variables
}
}
`;
const register = mutation(REGISTER);
let firstName = "";
let lastName = "";
let email = "";
let password = "";
let confirmPassword = "";
let loading = false;
let response = {};
let errors = {};
async function registerUser() {
try {
loading = true;
response = await register({
variables: {
//variables
},
});
const {
//variables
} = response.data.register;
$userStore = {
//variables
};
loading = false;
// persisting the token line
goto("/app/dashboard");
} catch (err) {
errors = err;
}
}
在我的标记中,我有一个表单,其中嵌套了一个button[type=submit],并且在提交表单时调用了注册函数。
有一个非常相似的组件,login,它的写法相同,但 Login 工作正常,并且 register 甚至不发送请求。
有什么我可能错过的吗?
我有一个debug 块检查请求对象是否已更改,但它根本没有更改。
编辑 这是我配置客户端的逻辑
import { setContext } from "@apollo/client/link/context";
// to write gql "import {gql} from '@apollo/client'
import {
ApolloClient,
createHttpLink,
InMemoryCache,
} from "@apollo/client";
import { setClient } from "svelte-apollo";
import fetch from "cross-fetch";
const httpLink = createHttpLink({
uri: "validaddresshere",
fetch,
});
const authLink = setContext((_, { headers }) => {
return {
headers: {
...headers,
Authorization: localStorage.getItem("token")
? `Bearer ${localStorage.getItem("token")}`
: "",
},
};
});
const client = new ApolloClient({
link: authLink.concat(httpLink),
cache: new InMemoryCache(),
});
编辑 2
问题似乎是我试图访问初始化之前的变量。我已经初始化了。更准确地说,它说我有firstName 作为undefined,即使你可以清楚地看到它是用let firstName = "" 初始化的
【问题讨论】:
标签: javascript graphql apollo apollo-client svelte