在微信小程序中使用 Javascript SDK
当你在微信小程序中使用维格表 Javascript SDK 时,通常会遇到 adapter is not a function
的报错:
请求发生错误: {success: false, code: 400, message: "adapter is not a function"}
这是因为 JS SDK 使用 axios
作为网络请求库,在微信小程序环境中,请求需要使用 wx.request
,因此 SDK 无法直接在微信小程序中使用。
不过 axios 提供了 adapter 接口,axios-miniprogram-adapter 是 axios 在小程序中的请求适配器,它可以让 SDK 正常工作。
安装 axios-miniprogram-adapter
yarn add axios-miniprogram-adapter
引入适配器
在初始化 Vika 实例时,指定 adapter
为引入的 axios-miniprogram-adapter
:
import mpAdapter from 'axios-miniprogram-adapter';
const vika = new Vika({
token: 'your_api_token',
adapter: mpAdapter,
});
vika.datasheet('dstxJZ2xZXJnXScfni').records.query().then(resp => {
console.log(resp.data?.records)
})
参考代码
下面是使用 taro 框架生成的小程序基础代码,在程序加载后,可以看到控制台打印出获取到的记录数据。
import { Component } from 'react'
import { View, Text, Button } from '@tarojs/components'
import Vika from '@vikadata/vika';
import Taro from '@tarojs/taro';
import mpAdapter from 'axios-miniprogram-adapter';
import './index.less';
export default class Index extends Component {
componentWillMount() { }
componentDidMount() {
const vika = new Vika({
token: 'your_api_token',
adapter: mpAdapter,
});
vika.datasheet('dstxJZ2xZXJnXScxxx').records.query().then(resp => {
console.log(resp.data?.records)
})
}
componentWillUnmount() { }
componentDidShow() { }
componentDidHide() { }
render() {
return (
<View className='index'>
<Text>Hello Vika!</Text>
</View>
)
}
}
如何上传附件?
因为微信小程序的限制,FormData 对象不可用。为了保证 SDK 不与非标准平台耦合,暂不支持在小程序中上传附件。
你可以参考社区的解决方案,自行封装请求实现。