-
Notifications
You must be signed in to change notification settings - Fork 4.9k
Closed
Description
问题描述
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 中成功包裹,而不是被移除;如:
报错信息
系统信息
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
Labels
No labels