2017-09-01 42 views
0

我從一個父組件通過參數字段傳遞道具來調用這個組件。但是,當我嘗試調用突變函數時,我不斷收到錯誤:mutate不是函數。我不明白是什麼導致這個問題,因爲我幾乎正確地在網上跟隨阿波羅文檔。阿波羅客戶端:mutate不是函數

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); 

回答

1

當您纏繞與graphql HOC,它將收到一個data道具(如果你的操作是查詢)或mutate道具(如果你的操作是一個突變)的組件。

你的代碼表明您期望的第二個目的,不是道具等,要傳遞給你的組件作爲參數:

const OnboardingComplete = (props, { mutate }) => { 

相反,你的表情應該是這樣的:

const OnboardingComplete = (props) => { 

你應該通過撥打props.mutate訪問mutate。如果你想使用對象解構,你也可以始終這樣做:

const OnboardingComplete = ({ first_name, last_name, id, mutate }) => { 
相關問題