的url
- */
- webViewUrl?: string
- }
-
- interface ShareAppMessageReturn {
- /**
- * 转发标题,默认为当前小程序名称
- */
- title?: string
-
- /**
- * 转发路径,必须是以 / 开头的完整路径,默认为当前页面 path
- */
- path?: string
-
- /**
- * 自定义图片路径,可以是本地文件路径、代码包文件路径或者网络图片路径
- * 支持PNG及JPG
- * 显示图片长宽比是 5:4
- */
- imageUrl?: string
- }
-
- interface TabItemTapObject {
- /**
- * 被点击tabItem的序号,从0开始
- */
- index: string
-
- /**
- * 被点击tabItem的页面路径
- */
- pagePath: string
-
- /**
- * 被点击tabItem的按钮文字
- */
- text: string
- }
-
- type GetDerivedStateFromProps =
- /**
- * Returns an update to a component's state based on its new props and old state.
- *
- * Note: its presence prevents any of the deprecated lifecycle methods from being invoked
- */
- (nextProps: Readonly
, prevState: S) => Partial | null;
-
- interface StaticLifecycle
{
- getDerivedStateFromProps?: GetDerivedStateFromProps
;
- }
-
- interface NewLifecycle
{
- /**
- * Runs before React applies the result of `render` to the document, and
- * returns an object to be given to componentDidUpdate. Useful for saving
- * things such as scroll position before `render` causes changes to it.
- *
- * Note: the presence of getSnapshotBeforeUpdate prevents any of the deprecated
- * lifecycle events from running.
- */
- getSnapshotBeforeUpdate?(prevProps: Readonly
, prevState: Readonly): SS | null;
- /**
- * Called immediately after updating occurs. Not called for the initial render.
- *
- * The snapshot is only present if getSnapshotBeforeUpdate is present and returns non-null.
- */
- componentDidUpdate?(prevProps: Readonly
, prevState: Readonly, snapshot?: SS): void;
-}
-
- // Components
- interface ComponentLifecycle
extends NewLifecycle
{
- componentWillMount?(): void
- componentDidMount?(): void
- componentWillReceiveProps?(nextProps: Readonly
, nextContext: any): void
- shouldComponentUpdate?(nextProps: Readonly
, nextState: Readonly, nextContext: any): boolean
- componentWillUpdate?(nextProps: Readonly
, nextState: Readonly, nextContext: any): void
- componentWillUnmount?(): void
- componentWillPreload?(params: { [propName: string]: any }): any
- componentDidShow?(): void
- componentDidHide?(): void
- componentDidCatchError?(err: string): void
- componentDidNotFound?(obj: PageNotFoundObject): void
- onPullDownRefresh?(): void
- onReachBottom?(): void
- onPageScroll?(obj: PageScrollObject): void
- onShareAppMessage?(obj: ShareAppMessageObject): ShareAppMessageReturn
- onTabItemTap?(obj: TabItemTapObject): void
- onResize?(obj: any): void
- }
-
- interface Component
extends ComponentLifecycle
{
- $scope?: any
- }
-
- interface ComponentOptions {
- addGlobalClass?: boolean
- }
-
- interface FunctionComponent
{
- (props: Readonly
): JSX.Element
- defaultProps?: Partial
- config?: Config
- options?: ComponentOptions
- }
-
- type FC
= FunctionComponent
-
- interface StatelessFunctionComponent {
- (): JSX.Element
- }
-
- type SFC = StatelessFunctionComponent
-
- interface ComponentClass
extends StaticLifecycle
{
- new (...args: any[]): Component
- propTypes?: any
- defaultProps?: Partial
- displayName?: string
- }
-
- // NOTE: only the Context object itself can get a displayName
- // https://github.com/facebook/react-devtools/blob/e0b854e4c/backend/attachRendererFiber.js#L310-L325
- // type Provider = ProviderExoticComponent>;
- // type Consumer = ExoticComponent>;
- interface Context {
- Provider: ComponentClass<{ value: T }>;
- // Consumer: Consumer;
- displayName?: string;
- }
- function createContext(
- defaultValue: T
- ): Context;
-
-
- // This will technically work if you give a Consumer or Provider but it's deprecated and warns
- /**
- * Accepts a context object (the value returned from `React.createContext`) and returns the current
- * context value, as given by the nearest context provider for the given context.
- *
- * @version 16.8.0
- * @see https://reactjs.org/docs/hooks-reference.html#usecontext
- */
- function useContext(context: Context/*, (not public API) observedBits?: number|boolean */): T;
-
-
- /**
- * 微信小程序全局 Window 配置和页面配置的公共项目
- */
- interface CommonPageConfig {
- /**
- * 导航栏背景颜色,HexColor
- * default: #000000
- */
- navigationBarBackgroundColor?: string
- /**
- * 导航栏标题颜色,仅支持 black/white
- * default: 'white'
- */
- navigationBarTextStyle?: 'white' | 'black'
- /**
- * 导航栏标题文字内容
- */
- navigationBarTitleText?: string
- /**
- * 导航栏样式,仅支持以下值:
- * default 默认样式
- * custom 自定义导航栏
- */
- navigationStyle?: 'default' | 'custom'
- /**
- * 窗口的背景色, HexColor
- * default: #ffffff
- */
- backgroundColor?: string
- /**
- * 下拉背景字体、loading 图的样式,仅支持 dark/light
- * default: 'dark'
- */
- backgroundTextStyle?: 'dark' | 'light'
- /**
- * 顶部窗口的背景色,仅 iOS 支持
- * default: #ffffff
- */
- backgroundColorTop?: string
- /**
- * 底部窗口的背景色,仅 iOS 支持
- * default: #ffffff
- */
- backgroundColorBottom?: string
- /**
- * 是否开启下拉刷新
- * default: false
- */
- enablePullDownRefresh?: boolean
- /**
- * 页面上拉触底事件触发时距页面底部距离,单位为px
- * default: 50
- */
- onReachBottomDistance?: number
- }
-
- interface PageConfig extends CommonPageConfig {
- /**
- * 设置为 true 则页面整体不能上下滚动;
- * 只在页面配置中有效,无法在 app.json 中设置该项
- * default: false
- */
- disableScroll?: boolean
- /**
- * 禁止页面右滑手势返回
- * default: false
- * @since 微信客户端 7.0.0
- *
- * **注意** 自微信客户端 7.0.5 开始,页面配置中的 disableSwipeBack 属性将不再生效,
- * 详情见[右滑手势返回能力调整](https://developers.weixin.qq.com/community/develop/doc/000868190489286620a8b27f156c01)公告
- */
- disableSwipeBack?: boolean
- }
-
- interface WindowConfig extends CommonPageConfig {
- /**
- * 屏幕旋转设置
- * 支持 auto / portrait / landscape
- * default: portrait
- * 详见 [响应显示区域变化](https://developers.weixin.qq.com/miniprogram/dev/framework/view/resizable.html)
- */
- pageOrientation?: 'auto' | 'portrait' | 'landscape'
- /**
- * 是否允许下拉刷新
- * default: NO
- * 备注:下拉刷新生效的前提是 allowsBounceVertical 值为 YES
- */
- pullRefresh?: 'YES' | 'NO' | boolean
- /**
- * 是否允许向下拉拽
- * default: YES
- */
- allowsBounceVertical?: 'YES' | 'NO'
- }
-
- interface TarbarList {
- /**
- * 页面路径,必须在 pages 中先定义
- */
- pagePath: string
- /**
- * tab 上按钮文字
- */
- text: string
- /**
- * 图片路径,icon 大小限制为40kb,建议尺寸为 81px * 81px,当 postion 为 top 时,此参数无效,不支持网络图片
- */
- iconPath?: string
- /**
- * 选中时的图片路径,icon 大小限制为40kb,建议尺寸为 81px * 81px ,当 postion 为 top 时,此参数无效
- */
- selectedIconPath?: string
- }
-
- interface TabBar {
- /**
- * tab 上的文字默认颜色
- */
- color?: string
- /**
- * tab 上的文字选中时的颜色
- */
- selectedColor?: string
- /**
- * tab 的背景色
- */
- backgroundColor?: string
- /**
- * tabbar上边框的颜色, 仅支持 black/white
- * @default: black
- */
- borderStyle?: 'black' | 'white'
- /**
- * tabar 的位置,可选值 bottom、top
- * @default: 'bottom'
- */
- position?: 'bottom' | 'top'
- /**
- * 自定义 tabBar,见[详情](https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html)
- * @default false
- * @since 2.1.0
- */
- custom?: boolean
-
- list: TarbarList[]
- }
-
- interface NetworkTimeout {
- /**
- * wx.request 的超时时间,单位毫秒。
- * @default 60000
- */
- request?: number
- /**
- * wx.connectSocket 的超时时间,单位毫秒。
- * @default 60000
- */
- connectSocket?: number
- /**
- * wx.uploadFile 的超时时间,单位毫秒。
- * @default 60000
- */
- uploadFile?: number
- /**
- * wx.downloadFile 的超时时间,单位毫秒。
- * @default 60000
- */
- downloadFile?: number
- }
-
- interface SubPackage {
- /**
- * 分包根路径
- * - 注意:不能放在主包pages目录下
- */
- root: string
- /**
- * 分包路径下的所有页面配置
- */
- pages: string[]
- /**
- * 分包别名,分包预下载时可以使用
- */
- name?: string
- /**
- * 分包是否是独立分包
- */
- independent?: boolean
- }
-
- interface Plugins {
- [key: string]: {
- version: string
- provider: string
- }
- }
-
- interface PreloadRule {
- [key: string]: {
- /**
- *进入页面后预下载分包的 root 或 name。__APP__ 表示主包。
- */
- packages: string[]
- /**
- * 在指定网络下预下载,可选值为:
- * all: 不限网络
- * wifi: 仅wifi下预下载
- * @default wifi
- */
- network?: 'all' | 'wifi'
- }
- }
-
- interface Permission {
- [key: string]: {
- /**
- * 小程序获取权限时展示的接口用途说明。最长30个字符
- */
- desc: string
- }
- }
- interface AppConfig {
- /**
- * 接受一个数组,每一项都是字符串,来指定小程序由哪些页面组成,数组的第一项代表小程序的初始页面
- */
- pages?: string[]
- tabBar?: TabBar
- /**
- * 各类网络请求的超时时间,单位均为毫秒。
- */
- networkTimeout?: NetworkTimeout
- /**
- * 是否开启 debug 模式,默认关闭
- * @default false
- */
- debug?: boolean
- /**
- * 启用插件功能页时,插件所有者小程序需要设置其 functionalPages 为 true。
- * @see https://developers.weixin.qq.com/miniprogram/dev/framework/plugin/functional-pages.html
- * @default false
- * @since 2.1.0
- */
- functionalPages?: boolean
- /**
- * 分包加载配置
- * 示例:
- * [
- * {
- * root: 'packages/module',
- * pages: [
- * 'pages/page/index'
- * ]
- * }
- * ]
- * @since 1.7.3
- */
- subPackages?: SubPackage[]
- /**
- * Worker 代码放置的目录
- * 使用 Worker 处理多线程任务时,设置 Worker 代码放置的目录
- * @since 1.9.90
- */
- workers?: string
- /**
- * 申明需要后台运行的能力,类型为数组。目前支持以下项目:
- * @since 微信客户端 6.7.2 及以上版本支持
- */
- requiredBackgroundModes?: ['audio']
- /**
- * 使用到的插件
- * @since 1.9.6
- */
- plugins?: Plugins
- /**
- * 声明分包预下载的规则。
- * preloadRule 中,key 是页面路径,value 是进入此页面的预下载配置
- * 注意: 分包预下载目前只支持通过配置方式使用,暂不支持通过调用API完成。
- * vConsole 里有preloadSubpackages开头的日志信息,可以用来验证预下载的情况。
- * @since 2.3.0
- */
- preloadRule?: PreloadRule
- /**
- * iPad 小程序是否支持屏幕旋转
- * @default false
- * @since 2.3.0
- */
- resizable?: boolean
- /**
- * 需要跳转的小程序列表
- * @since 2.4.0
- */
- navigateToMiniProgramAppIdList?: string[]
- /**
- * 小程序接口权限相关设置
- * @since 微信客户端 7.0.0
- */
- permission?: Permission
- }
-
- interface Config extends PageConfig, AppConfig {
- usingComponents?: {
- [key: string]: string
- }
- window?: WindowConfig
- cloud?: boolean
- }
-
- interface ComponentOptions {
- addGlobalClass?: boolean
- }
-
- interface RouterInfo {
- /**
- * 在跳转成功的目标页的生命周期方法里通过 `this.$router.params` 获取到传入的参数
- *
- * @example
- * componentWillMount () {
- * console.log(this.$router.params)
- * }
- *
- * @see 参考[路由功能:路由传参](https://nervjs.github.io/taro/docs/router.html#%E8%B7%AF%E7%94%B1%E4%BC%A0%E5%8F%82)一节
- */
- params: {
- [key: string]: string
- } & {
- path?: string
- scene?: number | string
- query?: {[key: string]: string} | string
- shareTicket?: string
- referrerInfo?: {[key: string]: any} | string
- }
- /**
- * 可以于 `this.$router.preload` 中访问到 `this.$preload` 传入的参数
- *
- * **注意** 上一页面没有使用 `this.$preload` 传入任何参数时 `this.$router` 不存在 `preload` 字段
- * 请开发者在使用时自行判断
- *
- * @example
- * componentWillMount () {
- * console.log('preload: ', this.$router.preload)
- * }
- *
- * @see 参考[性能优化实践:在小程序中,可以使用 `this.$preload` 函数进行页面跳转传参](https://nervjs.github.io/taro/docs/optimized-practice.html#%E5%9C%A8%E5%B0%8F%E7%A8%8B%E5%BA%8F%E4%B8%AD-%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8-this-preload-%E5%87%BD%E6%95%B0%E8%BF%9B%E8%A1%8C%E9%A1%B5%E9%9D%A2%E8%B7%B3%E8%BD%AC%E4%BC%A0%E5%8F%82)一节
- */
- preload?: {
- [key: string]: string
- }
- }
-
- class Component {
- constructor(props?: P, context?: any)
-
- config?: Config
-
- options?: ComponentOptions
-
- $componentType: 'PAGE' | 'COMPONENT'
-
- $router: RouterInfo
-
- $preloadData: any
-
- /**
- * 使用 `this.$preload` 函数进行页面跳转传参
- * @example this.$preload('key', 'val');
- * @example this.$preload({
- x: 1,
- y: 2
- });
- * @see https://nervjs.github.io/taro/docs/best-practice.html
- */
- $preload(key: string, value: any): void
- $preload(key: object): void
-
- setState(state: ((prevState: Readonly, props: P) => Pick | S) | (Pick | S), callback?: () => any): void
-
- forceUpdate(callBack?: () => any): void
-
- render(): any
-
- props: Readonly & Readonly<{ children?: any }>
- state: Readonly
- context: any
- refs: {
- [key: string]: any
- }
- }
-
- class PureComponent
extends Component
{}
-
- function memo
(
- FunctionComponent: FunctionComponent
,
- compare?: (oldProps: P, newProps: P) => Boolean
- ): FunctionComponent
-
- // Events
- class Events {
- /**
- * 监听一个事件,接受参数
- */
- on(eventName: string | symbol, listener: (...args: any[]) => void): this
-
- /**
- * 添加一个事件监听,并在事件触发完成之后移除Callbacks链
- */
- once(eventName: string | symbol, listener: (...args: any[]) => void): this
-
- /**
- * 取消监听一个事件
- */
- off(eventName: string | symbol, listener?: (...args: any[]) => void): this
-
- /**
- * 取消监听的所有事件
- */
- off(): this
-
- /**
- * 触发一个事件,传参
- */
- trigger(eventName: string | symbol, ...args: any[]): boolean
- }
-
- // eventCenter
-
- namespace eventCenter {
- function on(eventName: string | symbol, listener: (...args: any[]) => void): void
-
- function once(eventName: string | symbol, listener: (...args: any[]) => void): void
-
- function off(eventName: string | symbol, listener?: (...args: any[]) => void): void
-
- function off(): void
-
- function trigger(eventName: string | symbol, ...args: any[]): boolean
- }
-
- // ENV_TYPE
-
- enum ENV_TYPE {
- WEAPP = 'WEAPP',
- WEB = 'WEB',
- RN = 'RN',
- SWAN = 'SWAN',
- ALIPAY = 'ALIPAY',
- TT = 'TT'
- }
-
- function getEnv(): ENV_TYPE.WEAPP | ENV_TYPE.WEB | ENV_TYPE.RN | ENV_TYPE.ALIPAY | ENV_TYPE.TT | ENV_TYPE.SWAN
-
- function render(component: Component | JSX.Element, element: Element | null): any
-
- function internal_safe_set(...arg: any[]): any
- function internal_safe_get(...arg: any[]): any
-
- type MessageType = 'info' | 'success' | 'error' | 'warning'
-
- interface AtMessageOptions {
- message: string
- type?: MessageType
- duration?: number
- }
-
- function atMessage(options: AtMessageOptions): void
-
- function pxTransform(size: number): string
- function initPxTransform(config: { designWidth: number; deviceRatio: object })
-
- interface RequestParams extends request.Param {
- [propName: string]: any
- }
-
- type interceptor = (chain: Chain) => any
-
- interface Chain {
- index: number
- requestParams: RequestParams
- interceptors: interceptor[]
- proceed(requestParams: RequestParams): any
- }
-
- namespace interceptors {
- function logInterceptor(chain: Chain): Promise
-
- function timeoutInterceptor(chain: Chain): Promise
- }
-
- function addInterceptor(interceptor: interceptor): any
-
- /**
- * 小程序引用插件 JS 接口
- */
- function requirePlugin(pluginName: string): any
-
- /**
- *
- * 微信端能力
- * original code from: https://github.com/wx-minapp/minapp-wx/blob/master/typing/wx.d.ts
- * Lincenced under MIT license: https://github.com/qiu8310/minapp/issues/69
- * thanks for the great work by @qiu8310 👍👍👍
- *
- */
-
- namespace request {
- type Promised < T extends any | string | ArrayBuffer = any > = {
- /**
- * 开发者服务器返回的数据
- *
- * **data 数据说明:**
- *
- * 最终发送给服务器的数据是 String 类型,如果传入的 data 不是 String 类型,会被转换成 String 。转换规则如下:
- *
- * * 对于 `GET` 方法的数据,会将数据转换成 query string(encodeURIComponent(k)=encodeURIComponent(v)&encodeURIComponent(k)=encodeURIComponent(v)...)
- * * 对于 `POST` 方法且 `header['content-type']` 为 `application/json` 的数据,会对数据进行 JSON 序列化
- * * 对于 `POST` 方法且 `header['content-type']` 为 `application/x-www-form-urlencoded` 的数据,会将数据转换成 query string (encodeURIComponent(k)=encodeURIComponent(v)&encodeURIComponent(k)=encodeURIComponent(v)...)
- */
- data: T
- /**
- * 开发者服务器返回的 HTTP 状态码
- */
- statusCode: number
- /**
- * 开发者服务器返回的 HTTP Response Header
- *
- * @since 1.2.0
- */
- header: any
- }
- /**
- * 网络请求任务对象
- * @see https://developers.weixin.qq.com/miniprogram/dev/api/network/request/RequestTask.html
- */
- interface requestTask extends Promise> {
- /**
- * 中断请求任务
- * @see https://developers.weixin.qq.com/miniprogram/dev/api/network/request/RequestTask.abort.html
- */
- abort(): void
- }
- type Param < P extends any | string | ArrayBuffer = any > = {
- /**
- * 开发者服务器接口地址
- */
- url: string
- /**
- * 请求的参数
- */
- data?: P
- /**
- * 设置请求的 header,header 中不能设置 Referer。
- */
- header?: any
- /**
- * (需大写)有效值:OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
- *
- * @default GET
- */
- method?: 'OPTIONS' | 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'TRACE' | 'CONNECT'
- /**
- * 如果设为 json,会尝试对返回的数据做一次 JSON.parse
- *
- * @default json
- */
- dataType?: string
- /**
- * 设置响应的数据类型。合法值:text、arraybuffer
- *
- * @default text
- * @since 1.7.0
- */
- responseType?: string
- /**
- * 设置 H5 端是否使用jsonp方式获取数据
- *
- * @default false
- */
- jsonp?: boolean
- /**
- * 设置 H5 端 jsonp 请求 url 是否需要被缓存
- *
- * @default false
- */
- jsonpCache?: boolean
- /**
- * 设置 H5 端是否允许跨域请求。有效值:no-cors, cors, same-origin
- *
- * @default same-origin
- */
- mode?: 'no-cors' | 'cors' | 'same-origin'
- /**
- * 设置 H5 端是否携带 Cookie。有效值:include, same-origin, omit
- *
- * @default omit
- */
- credentials?: 'include' | 'same-origin' | 'omit'
- /**
- * 设置 H5 端缓存模式。有效值:default, no-cache, reload, force-cache, only-if-cached
- *
- * @default default
- */
- cache?: 'default' | 'no-cache' | 'reload' | 'force-cache' | 'only-if-cached'
- /**
- * 设置 H5 端请求响应超时时间
- *
- * @default 2000
- */
- timeout?: number
- /**
- * 设置 H5 端请求重试次数
- *
- * @default 2
- */
- retryTimes?: number
- /**
- * 设置 H5 端请求的兜底接口
- */
- backup?: string | string[]
- /**
- * 设置 H5 端请求响应的数据校验函数,若返回 false,则请求兜底接口,若无兜底接口,则报请求失败
- */
- dataCheck?(): boolean
- /**
- * 设置 H5 端请求是否使用缓存
- *
- * @default false
- */
- useStore?: boolean
- /**
- * 设置 H5 端请求缓存校验的 key
- */
- storeCheckKey?: string
- /**
- * 设置 H5 端请求缓存签名
- */
- storeSign?: string
- /**
- * 设置 H5 端请求校验函数,一般不需要设置
- */
- storeCheck?(): boolean
- /**
- * 接口调用成功的回调函数
- */
- success?: ParamPropSuccess
- /**
- * 接口调用失败的回调函数
- */
- fail?: ParamPropFail
- /**
- * 接口调用结束的回调函数(调用成功、失败都会执行)
- */
- complete?: ParamPropComplete
- }
- /**
- * 接口调用成功的回调函数
- */
- type ParamPropSuccess = (res: any) => any
- /**
- * 接口调用失败的回调函数
- */
- type ParamPropFail = (err: any) => any
- /**
- * 接口调用结束的回调函数(调用成功、失败都会执行)
- */
- type ParamPropComplete = () => any
- }
- /**
- * 发起网络请求。**使用前请先阅读[说明](https://developers.weixin.qq.com/miniprogram/dev/api/network/request/wx.request.html)**。
- *
- * **返回值:**
- *
- * @returns {request.requestTask} 返回一个 `requestTask` 对象,通过 `requestTask`,可中断请求任务。
- *
- * @since 1.4.0
- *
- * **Bug & Tip:**
- *
- * 1. `tip`: content-type 默认为 'application/json';
- * 2. `tip`: url 中不能有端口;
- * 3. `bug`: 开发者工具 `0.10.102800` 版本,`header` 的 `content-type` 设置异常;
- *
- * **示例代码:**
- *
- * @example
- * // 回调函数(Callback)用法:
- * const requestTask = Taro.request({
- * url: 'test.php', //仅为示例,并非真实的接口地址
- * data: {
- * x: '' ,
- * y: ''
- * },
- * header: {
- * 'content-type': 'application/json' // 默认值
- * },
- * success: function(res) {
- * console.log(res.data)
- * }
- * })
- * requestTask.abort()
- *
- * // Promise 用法:
- * const requestTask = Taro.request({
- * url: 'test.php', //仅为示例,并非真实的接口地址
- * data: {
- * x: '' ,
- * y: ''
- * },
- * header: {
- * 'content-type': 'application/json' // 默认值
- * },
- * success: function(res) {
- * console.log(res.data)
- * }
- * })
- * requestTask.then(res => {
- * console.log(res.data)
- * })
- * requestTask.abort()
- *
- * // async/await 用法:
- * const requestTask = Taro.request(params)
- * const res = await requestTask
- * requestTask.abort()
- *
- * // 不需要 abort 的 async/await 用法:
- * const res = await Taro.request(params)
- *
- * @see https://developers.weixin.qq.com/miniprogram/dev/api/network/request/wx.request.html
- */
- function request(OBJECT: request.Param): request.requestTask
-
- type arrayBuffer = Uint8Array | Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | ArrayBuffer
-
- /**
- * 将 ArrayBuffer 数据转成 Base64 字符串
- */
- function arrayBufferToBase64(buffer: arrayBuffer): string
-
- /**
- * 将 Base64 字符串转成 ArrayBuffer 数据
- */
- function base64ToArrayBuffer(base64: string): arrayBuffer
-
- namespace uploadFile {
- type Promised = {
- /**
- * 开发者服务器返回的数据
- */
- data: string
- /**
- * 开发者服务器返回的 HTTP 状态码
- */
- statusCode: number
- }
- /**
- * 上传进度
- */
- type UploadTaskProgress = {
- progress: number
- totalBytesSent: number
- totalBytesExpectedToSend: number
- }
- /**
- * 上传进度回调
- */
- type UploadTaskProgressCallback = (res: UploadTaskProgress) => any
- /**
- * 上传任务
- */
- type UploadTask = Promise & {
- /**
- * 上传进度回调
- */
- progress: (callback: UploadTaskProgressCallback) => void
- /**
- * 终止上传任务
- */
- abort: () => void
- }
- type Param = {
- /**
- * 开发者服务器 url
- */
- url: string
- /**
- * 要上传文件资源的路径
- */
- filePath: string
- /**
- * 文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容
- */
- name: string
- /**
- * HTTP 请求 Header, header 中不能设置 Referer
- */
- header?: any
- /**
- * HTTP 请求中其他额外的 form data
- */
- formData?: any
- /**
- * 接口调用成功的回调函数
- */
- success?: ParamPropSuccess
- /**
- * 接口调用失败的回调函数
- */
- fail?: ParamPropFail
- /**
- * 接口调用结束的回调函数(调用成功、失败都会执行)
- */
- complete?: ParamPropComplete
- }
- /**
- * 接口调用成功的回调函数
- */
- type ParamPropSuccess = (res: any) => any
- /**
- * 接口调用失败的回调函数
- */
- type ParamPropFail = (err: any) => any
- /**
- * 接口调用结束的回调函数(调用成功、失败都会执行)
- */
- type ParamPropComplete = () => any
- }
- /**
- * 将本地资源上传到开发者服务器,客户端发起一个 HTTPS POST 请求,其中 `content-type` 为 `multipart/form-data` 。
- * **使用前请先阅读[说明](https://developers.weixin.qq.com/miniprogram/dev/framework/ability/network.html)**。
- *
- * 如页面通过 [Taro.chooseImage](https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseImage.html)
- * 等接口获取到一个本地资源的临时文件路径后,可通过此接口将本地资源上传到指定服务器。
- *
- * **返回值:**
- *
- * @since 1.4.0
- *
- * 返回一个 `uploadTask` 对象,通过 `uploadTask`,可监听上传进度变化事件,以及取消上传任务。
- *
- * **示例代码:**
- *
- ```javascript
- Taro.chooseImage({
- success: function(res) {
- var tempFilePaths = res.tempFilePaths
- Taro.uploadFile({
- url: 'https://example.weixin.qq.com/upload', //仅为示例,非真实的接口地址
- filePath: tempFilePaths[0],
- name: 'file',
- formData:{
- 'user': 'test'
- },
- success: function(res){
- var data = res.data
- //do something
- }
- })
- }
- })
- ```
- *
- * **示例代码:**
- *
- ```javascript
- const uploadTask = Taro.uploadFile({
- url: 'http://example.weixin.qq.com/upload', //仅为示例,非真实的接口地址
- filePath: tempFilePaths[0],
- name: 'file',
- formData:{
- 'user': 'test'
- },
- success: function(res){
- var data = res.data
- //do something
- }
- })
- uploadTask.progress((res) => {
- console.log('上传进度', res.progress)
- console.log('已经上传的数据长度', res.totalBytesSent)
- console.log('预期需要上传的数据总长度', res.totalBytesExpectedToSend)
- })
- uploadTask.abort() // 取消上传任务
- ```
- * @see https://developers.weixin.qq.com/miniprogram/dev/api/network/upload/wx.uploadFile.html
- */
- function uploadFile(OBJECT: uploadFile.Param): uploadFile.UploadTask
-
- namespace downloadFile {
- type Promised = {
- /**
- * 临时文件路径,下载后的文件会存储到一个临时文件
- */
- tempFilePath: string
- /**
- * 开发者服务器返回的 HTTP 状态码
- */
- statusCode: number
- }
- type Param = {
- /**
- * 下载资源的 url
- */
- url: string
- /**
- * HTTP 请求 Header,header 中不能设置 Referer
- */
- header?: any
- /**
- * 接口调用成功的回调函数
- */
- success?: ParamPropSuccess
- /**
- * 接口调用失败的回调函数
- */
- fail?: ParamPropFail
- /**
- * 接口调用结束的回调函数(调用成功、失败都会执行)
- */
- complete?: ParamPropComplete
- }
- /**
- * 接口调用成功的回调函数
- */
- type ParamPropSuccess = (res: any) => any
- /**
- * 接口调用失败的回调函数
- */
- type ParamPropFail = (err: any) => any
- /**
- * 接口调用结束的回调函数(调用成功、失败都会执行)
- */
- type ParamPropComplete = () => any
- /**
- * 下载进度
- */
- type DownloadTaskProgress = {
- progress: number
- totalBytesWritten: number
- totalBytesExpectedToWrite: number
- }
- /**
- * 下载进度回调
- */
- type DownloadTaskProgressCallback = (res: DownloadTaskProgress) => any
- /**
- * 下载任务
- */
- type DownloadTask = Promise & {
- /**
- * 下载进度回调
- */
- progress: (params: DownloadTaskProgressCallback) => void
- /**
- * 终止下载任务
- */
- abort: () => void
- }
- }
- /**
- * 下载文件资源到本地,客户端直接发起一个 HTTP GET 请求,返回文件的本地临时路径。
- * **使用前请先阅读[说明](https://developers.weixin.qq.com/miniprogram/dev/framework/ability/network.html)**。
- *
- * **返回值:**
- *
- * @since 1.4.0
- *
- * 返回一个 `downloadTask` 对象,通过 `downloadTask`,可监听下载进度变化事件,以及取消下载任务。
- *
- * **Bug & Tip:**
- *
- * 1. `tip`: 6.5.3 以及之前版本的 iOS 微信客户端 `header` 设置无效
- *
- * **示例代码:**
- *
- ```javascript
- Taro.downloadFile({
- url: 'https://example.com/audio/123', //仅为示例,并非真实的资源
- success: function(res) {
- // 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容
- if (res.statusCode === 200) {
- Taro.playVoice({
- filePath: res.tempFilePath
- })
- }
- }
- })
- ```
- *
- * **示例代码:**
- *
- ```javascript
- const downloadTask = Taro.downloadFile({
- url: 'http://example.com/audio/123', //仅为示例,并非真实的资源
- success: function(res) {
- Taro.playVoice({
- filePath: res.tempFilePath
- })
- }
- })
- downloadTask.progress((res) => {
- console.log('下载进度', res.progress)
- console.log('已经下载的数据长度', res.totalBytesWritten)
- console.log('预期需要下载的数据总长度', res.totalBytesExpectedToWrite)
- })
- downloadTask.abort() // 取消下载任务
- ```
- * @see https://developers.weixin.qq.com/miniprogram/dev/api/network/download/wx.downloadFile.html
- */
- function downloadFile(OBJECT: downloadFile.Param): downloadFile.DownloadTask
-
- namespace connectSocket {
- type Promised = SocketTask
-
- type Param = {
- /**
- * 开发者服务器接口地址,必须是 wss 协议,且域名必须是后台配置的合法域名
- */
- url: string
- /**
- * HTTP Header , header 中不能设置 Referer
- */
- header?: any
- /**
- * 默认是GET,有效值:OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
- */
- method?: 'OPTIONS' | 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'TRACE' | 'CONNECT'
- /**
- * 子协议数组
- *
- * @since 1.4.0
- */
- protocols?: string[]
- }
- }
- /**
- * 创建一个 [WebSocket](https://developer.mozilla.org/zh-CN/docs/Web/API/WebSocket) 连接。
- * **使用前请先阅读[说明](https://developers.weixin.qq.com/miniprogram/dev/framework/ability/network.html)**。
- *
- * **基础库 1.7.0 之前,一个微信小程序同时只能有一个 WebSocket 连接,如果当前已存在一个 WebSocket 连接,会自动关闭该连接,并重新创建一个 WebSocket 连接。基础库版本 1.7.0 及以后,支持存在多个 WebSokcet 连接,每次成功调用 Taro.connectSocket 会返回一个新的 [SocketTask](https://developers.weixin.qq.com/minigame/dev/api/network/websocket/SocketTask.html)。**
- *
- * **示例代码:**
- *
- ```javascript
- Taro.connectSocket({
- url: 'wss://example.qq.com',
- data:{
- x: '',
- y: ''
- },
- header:{
- 'content-type': 'application/json'
- },
- protocols: ['protocol1'],
- method:"GET"
- })
- ```
- * @see https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/wx.connectSocket.html
- */
- function connectSocket(OBJECT: connectSocket.Param): Promise
-
- namespace onSocketOpen {
- type Param = (res: ParamParam) => any
- type ParamParam = {
- /**
- * 连接成功的 HTTP 响应 Header
- *
- * @since 2.0.0
- */
- header?: any
- }
- }
- /**
- * 监听WebSocket连接打开事件。
- *
- * **示例代码:**
- *
- ```javascript
- Taro.connectSocket({
- url: 'test.php'
- })
- Taro.onSocketOpen(function(res) {
- console.log('WebSocket连接已打开!')
- })
- ```
- * @see https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/wx.onSocketOpen.html
- */
- function onSocketOpen(callback?: onSocketOpen.Param): void
-
- /**
- * 监听WebSocket错误。
- *
- * **示例代码:**
- *
- ```javascript
- Taro.connectSocket({
- url: 'test.php'
- })
- Taro.onSocketOpen(function(res){
- console.log('WebSocket连接已打开!')
- })
- Taro.onSocketError(function(res){
- console.log('WebSocket连接打开失败,请检查!')
- })
- ```
- * @see https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/wx.onSocketError.html
- */
- function onSocketError(CALLBACK: any): void
-
- namespace sendSocketMessage {
- type Param = {
- /**
- * 需要发送的内容
- */
- data: string | ArrayBuffer
- }
- }
- /**
- * 通过 WebSocket 连接发送数据,需要先 [Taro.connectSocket](https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/wx.connectSocket.html) 回调之后才能发送。
- *
- * **示例代码:**
- *
- ```javascript
- var socketOpen = false
- var socketMsgQueue = []
- Taro.connectSocket({
- url: 'test.php'
- })
- Taro.onSocketOpen(function(res) {
- socketOpen = true
- for (var i = 0; i < socketMsgQueue.length; i++){
- sendSocketMessage(socketMsgQueue[i])
- }
- socketMsgQueue = []
- })
- function sendSocketMessage(msg) {
- if (socketOpen) {
- Taro.sendSocketMessage({
- data:msg
- })
- } else {
- socketMsgQueue.push(msg)
- }
- }
- ```
- * @see https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/wx.sendSocketMessage.html
- */
- function sendSocketMessage(OBJECT: sendSocketMessage.Param): Promise
-
- namespace onSocketMessage {
- type Param < T = any > = (res: ParamParam) => any
- type ParamParam < T extends any | string | ArrayBuffer = any > = {
- /**
- * 服务器返回的消息
- */
- data: T
- }
- }
- /**
- * 监听WebSocket接受到服务器的消息事件。
- *
- * **示例代码:**
- *
- ```javascript
- Taro.connectSocket({
- url: 'test.php'
- })
- Taro.onSocketMessage(function(res) {
- console.log('收到服务器内容:' + res.data)
- })
- ```
- * @see https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/wx.onSocketMessage.html
- */
- function onSocketMessage