Apollo 客户端:mutate 不是函数
Apollo client: mutate is not a function
我正在从通过参数字段传递道具的父组件调用此组件。但是,当我尝试调用突变函数时,我不断收到错误消息:突变不是函数。我不明白是什么导致了这个问题,因为我几乎完全按照在线的 apollo 文档。
const OnboardingComplete = (props, { mutate }) => {
const currentUser = {
id: props.id,
firstName: props.first_name,
lastName: props.last_name
}
return (
<View style={styles.subcontainer}>
<Button bordered rounded iconLeft
style={styles.importButton}
onPress={() =>
mutate({ variables: { user: currentUser } })
}>
<Text style={styles.buttonText}>Complete </Text>
<Icon name='arrow-forward' />
</Button>
</View>
);
}
const addUser = gql`
mutation addUser($user: UserInput!) {
addUser(input: $user)
}
`;
export default graphql(addUser)(OnboardingComplete);
当你用 graphql
HOC 包装一个组件时,它会收到一个 data
属性(如果你的操作是一个查询)或一个 mutate
属性(如果你的操作是突变)。
您的代码表明您希望将第二个对象(道具除外)作为参数传递给您的组件:
const OnboardingComplete = (props, { mutate }) => {
相反,您的表达式应该如下所示:
const OnboardingComplete = (props) => {
您应该通过调用 props.mutate
来访问 mutate
。如果你想使用对象解构,你也可以这样做:
const OnboardingComplete = ({ first_name, last_name, id, mutate }) => {
这也是我这边的问题。
我得到了解决方案,因为我将 createApolloClient 作为异步函数,它不应该是异步函数。然后工作正常!
async function createApolloClient(...)
这会导致错误。
function createApolloClient(...)
没有错误...很奇怪,但它解决了。
我正在从通过参数字段传递道具的父组件调用此组件。但是,当我尝试调用突变函数时,我不断收到错误消息:突变不是函数。我不明白是什么导致了这个问题,因为我几乎完全按照在线的 apollo 文档。
const OnboardingComplete = (props, { mutate }) => {
const currentUser = {
id: props.id,
firstName: props.first_name,
lastName: props.last_name
}
return (
<View style={styles.subcontainer}>
<Button bordered rounded iconLeft
style={styles.importButton}
onPress={() =>
mutate({ variables: { user: currentUser } })
}>
<Text style={styles.buttonText}>Complete </Text>
<Icon name='arrow-forward' />
</Button>
</View>
);
}
const addUser = gql`
mutation addUser($user: UserInput!) {
addUser(input: $user)
}
`;
export default graphql(addUser)(OnboardingComplete);
当你用 graphql
HOC 包装一个组件时,它会收到一个 data
属性(如果你的操作是一个查询)或一个 mutate
属性(如果你的操作是突变)。
您的代码表明您希望将第二个对象(道具除外)作为参数传递给您的组件:
const OnboardingComplete = (props, { mutate }) => {
相反,您的表达式应该如下所示:
const OnboardingComplete = (props) => {
您应该通过调用 props.mutate
来访问 mutate
。如果你想使用对象解构,你也可以这样做:
const OnboardingComplete = ({ first_name, last_name, id, mutate }) => {
这也是我这边的问题。 我得到了解决方案,因为我将 createApolloClient 作为异步函数,它不应该是异步函数。然后工作正常!
async function createApolloClient(...)
这会导致错误。
function createApolloClient(...)
没有错误...很奇怪,但它解决了。