Apollo:数据/突变道具未传递给组件

Posted

技术标签:

【中文标题】Apollo:数据/突变道具未传递给组件【英文标题】:Apollo: data / mutation prop not passed to component 【发布时间】:2017-03-31 08:02:55 【问题描述】:

我有以下带有查询和突变的组件,但我的组件没有收到数据和突变道具。

我的代码中是否做错了什么或遗漏了什么?查询确实被执行了,只是没有传递下去。 this.props.mutate 和 this.props.data 是未定义的。

class ResetConfirm extends React.Component 
  static propTypes = 
    intl: intlShape.isRequired,
    token: React.PropTypes.string,
    data: React.PropTypes.shape(
      loading: React.PropTypes.bool.isRequired,
      checkToken: React.PropTypes.array,
    ).isRequired,
    mutate: React.PropTypes.func.isRequired,
  

  submitForm = (model) => 
    this.setState(
      loading: true,
    );

    this.props.mutate( variables:  password: model.password, token: this.props.token  )
      .then(( data ) => 
        // redirect
      ).catch((error) => 
        console.log('there was an error sending the query', error);
      );
  
  render() 
       //render jsx
  


const CheckTokenQuery = gql`
  query CheckToken($token: String!) 
    checkToken(token: $token) 
      response
    
  
`;

const SetNewPasswordMutation = gql`
  mutation SetNewPasswordMutation($password: String!, $token: String!) 
    resetPassword(password: $password, token: $token) 
      response
    
  
`;

export default graphql(SetNewPasswordMutation,  name: SetNewPasswordMutation )(
  graphql(CheckTokenQuery,  name: CheckTokenQuery, forceFetch: true )(injectIntl(connect(ResetConfirm)))
);

【问题讨论】:

【参考方案1】:

您已使用name 将突变道具命名为SetNewPasswordMutation

这意味着您需要从您的组件中调用它,例如:

this.props.SetNewPasswordMutation(
   variables:  password: model.password, token: this.props.token  )

【讨论】:

以上是关于Apollo:数据/突变道具未传递给组件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Apollo 执行突变后如何更新单独的组件道具

是否可以将变量传递给 react-apollo 的“儿童”道具?

阿波罗突变未出现在道具中

使用 graphql 将道具传递给高阶组件时出现 React-apollo Typescript 错误

Apollo Client 2.1 中的突变错误处理

Apollo/graphQL:如何将乐观 UI 用于嵌套反应组件的突变?