Skip to content

无法使用ApolloProvider 标签,<ApolloProvider>打包成h5时被taro移除了 #2679

@leoswing

Description

@leoswing

问题描述
Taro项目框架引入了Apollo Client ,所以使用ApolloProvider 作为工程入口注入;
使用npm run build:h5的时候,脚本 taro build 将 标签 移除调了;
因此整个taro工程无法在根组件注入 ApolloProvider,子组件无法直接使用 client;
被迫显式调用获取Apollo Client, 而且无法调用Apollo Client 高阶组件: 和 ;
看了源码 taro build,是判断是否有 Provider 标签,同时属性store 是否设置,才将Provider 标签插入。

复现步骤
[复现问题的步骤]
app.js 引入 Apollo Client 以及 ApolloProvider;
使用 ApolloProvider 标签 包裹 ;
使用 npm run build:h5 执行构建

import { ApolloClient } from 'apollo-client';
import { ApolloProvider } from 'react-apollo';
...

class App extends Component {
   render () {
      return (
        <ApolloProvider client={client}>
            <App />
       </ApolloProvider>
      )
  }
}

期望行为
ApolloProvicer 能在打包之后的 app.js 中成功包裹,而不是被移除;如:

报错信息

[这里请贴上你的完整报错截图或文字]
image

系统信息

Taro v1.2 及以上版本已添加 taro info 命令,方便大家查看系统及依赖信息,运行该命令后将结果贴下面即可。

  • 操作系统: [Windows 10]
  • Taro 版本 [v.1.2.16]
  • Node.js 版本 [v9.9.0]
  • 报错平台 [h5]

补充信息
[可选]
taro build 里面的判断,基于app.js送进来的标签是否为 Provider, 而且是否有store属性,决定是否添加 标签,因而对于ApolloProvider 标签判断不足,希望添加上这一个处理;不然对于 react-apollo 里面很多高阶组件还有 ApolloProvider 都无法使用;

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions