diff --git a/examples/build-weapp-plugin/README.md b/examples/build-weapp-plugin/README.md index b631d1b97d78..3b33fd26b2dc 100644 --- a/examples/build-weapp-plugin/README.md +++ b/examples/build-weapp-plugin/README.md @@ -22,7 +22,7 @@ $ npm run build #### 3. 开发 -插件逻辑位于 `src/plugin` 内,而 `pages/index` 则是用于测试插件的页面。 +插件逻辑位于 `src/plugin` 内,而 `src/pages/index` 则是用于测试插件的页面。 #### 4. 预览 diff --git a/examples/build-weapp-plugin/package.json b/examples/build-weapp-plugin/package.json index 30be05efc04c..227f7ed9c62c 100644 --- a/examples/build-weapp-plugin/package.json +++ b/examples/build-weapp-plugin/package.json @@ -21,26 +21,26 @@ ], "dependencies": { "@babel/runtime": "^7.7.7", - "@tarojs/components": "3.4.2", - "@tarojs/plugin-framework-react": "3.4.2", - "@tarojs/react": "3.4.2", - "@tarojs/runtime": "3.4.2", - "@tarojs/taro": "3.4.2", + "@tarojs/components": "3.4.3", + "@tarojs/plugin-framework-react": "3.4.3", + "@tarojs/react": "3.4.3", + "@tarojs/runtime": "3.4.3", + "@tarojs/taro": "3.4.3", "react": "^17.0.0", "react-dom": "^17.0.0" }, "devDependencies": { "@babel/core": "^7.8.0", - "@tarojs/cli": "3.4.2", - "@tarojs/mini-runner": "3.4.2", - "@tarojs/webpack-runner": "3.4.2", + "@tarojs/cli": "3.4.3", + "@tarojs/mini-runner": "3.4.3", + "@tarojs/webpack-runner": "3.4.3", "@types/react": "^17.0.2", "@types/webpack-env": "^1.13.6", "@typescript-eslint/eslint-plugin": "^4.15.1", "@typescript-eslint/parser": "^4.15.1", - "babel-preset-taro": "3.4.2", + "babel-preset-taro": "3.4.3", "eslint": "^6.8.0", - "eslint-config-taro": "3.4.2", + "eslint-config-taro": "3.4.3", "eslint-plugin-import": "^2.12.0", "eslint-plugin-react": "^7.8.2", "eslint-plugin-react-hooks": "^4.2.0", diff --git a/examples/build-weapp-plugin/yarn.lock b/examples/build-weapp-plugin/yarn.lock index 1e756b3a91c5..9582570c9780 100644 --- a/examples/build-weapp-plugin/yarn.lock +++ b/examples/build-weapp-plugin/yarn.lock @@ -1342,40 +1342,40 @@ dependencies: defer-to-connect "^1.0.1" -"@tarojs/api@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@tarojs/api/-/api-3.4.1.tgz#4a90cf48161eb627fa4abfd6d4b497a683a5aa55" - integrity sha512-Gmh0e9cp3rCofCCGQNlmTpdpSvgnHGDKGNwkQzzSTpuqMNih6a0jVQaG6zk3lh5mETVTcf+8tF5q4MTFppRL/g== +"@tarojs/api@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@tarojs/api/-/api-3.4.3.tgz#10b991d4bd69132e3af313114f8e40845e40ef85" + integrity sha512-CKtYXmSs8ohVTDBPs+dzZG3TC1Tv0cIB5PnsBnPmg2Vt5ErUmHGKDvyY1R1GHxMADHrmgQDNX0Dsc9IpwtPoew== dependencies: "@babel/runtime" "^7.14.5" - "@tarojs/runtime" "3.4.1" + "@tarojs/runtime" "3.4.3" -"@tarojs/cli@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@tarojs/cli/-/cli-3.4.1.tgz#766fb3312bc6ea906ba7d26395eccd8820c58304" - integrity sha512-Dy8k1DkwAmrqZidDj6GTOjaUr0NKc/W+ZQtD/WyNL/7OpPOm9jVKiSeS9Rf3SL+EJKAjE0BqpVefYT+M3iswMg== +"@tarojs/cli@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@tarojs/cli/-/cli-3.4.3.tgz#74519b43b61b46bafcb6b851cd3669c376c95ab7" + integrity sha512-sCP3/p9Qd208oKBlznKNkTa3EBK4auJwIX3LwHWM3HvhnwNWmucV4bK4WDeob/O8Jq4fNEhBK2cLw0fL8g36Tg== dependencies: "@babel/template" "^7.14.5" "@babel/traverse" "^7.14.5" "@babel/types" "^7.14.5" "@hapi/joi" "17.1.1" - "@tarojs/helper" "3.4.1" - "@tarojs/mini-runner" "3.4.1" - "@tarojs/plugin-framework-react" "3.4.1" - "@tarojs/plugin-framework-vue2" "3.4.1" - "@tarojs/plugin-framework-vue3" "3.4.1" - "@tarojs/plugin-platform-alipay" "3.4.1" - "@tarojs/plugin-platform-jd" "3.4.1" - "@tarojs/plugin-platform-qq" "3.4.1" - "@tarojs/plugin-platform-swan" "3.4.1" - "@tarojs/plugin-platform-tt" "3.4.1" - "@tarojs/plugin-platform-weapp" "3.4.1" - "@tarojs/service" "3.4.1" - "@tarojs/shared" "3.4.1" - "@tarojs/taro" "3.4.1" - "@tarojs/taroize" "3.4.1" + "@tarojs/helper" "3.4.3" + "@tarojs/mini-runner" "3.4.3" + "@tarojs/plugin-framework-react" "3.4.3" + "@tarojs/plugin-framework-vue2" "3.4.3" + "@tarojs/plugin-framework-vue3" "3.4.3" + "@tarojs/plugin-platform-alipay" "3.4.3" + "@tarojs/plugin-platform-jd" "3.4.3" + "@tarojs/plugin-platform-qq" "3.4.3" + "@tarojs/plugin-platform-swan" "3.4.3" + "@tarojs/plugin-platform-tt" "3.4.3" + "@tarojs/plugin-platform-weapp" "3.4.3" + "@tarojs/service" "3.4.3" + "@tarojs/shared" "3.4.3" + "@tarojs/taro" "3.4.3" + "@tarojs/taroize" "3.4.3" "@tarojs/transformer-wx" "^2.0.4" - "@tarojs/webpack-runner" "3.4.1" + "@tarojs/webpack-runner" "3.4.3" "@types/request" "^2.48.1" adm-zip "^0.4.13" babylon "^6.18.0" @@ -1387,7 +1387,7 @@ ejs "^2.6.1" envinfo "^6.0.1" eslint "^6.1.0" - eslint-config-taro "3.4.1" + eslint-config-taro "3.4.3" eslint-plugin-import "^2.8.0" eslint-plugin-react "^7.4.0" eslint-plugin-react-hooks "^4.2.0" @@ -1412,7 +1412,7 @@ postcss-modules-resolve-imports "^1.3.0" postcss-modules-scope "^1.1.0" postcss-modules-values "^1.3.0" - postcss-pxtransform "3.4.1" + postcss-pxtransform "3.4.3" postcss-reporter "^6.0.1" postcss-taro-unit-transform "1.2.15" postcss-url "^7.3.2" @@ -1432,13 +1432,13 @@ xml2js "^0.4.19" xxhashjs "^0.2.2" -"@tarojs/components@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@tarojs/components/-/components-3.4.1.tgz#ba5fbe9308b8ea1501688f8a33ef894a76c8372c" - integrity sha512-2w/VdaiPoeJA6moFYVIfNg2WV8sUYwPxS5sHwKyH4iH/IoKOY34xFDh327ePKnqKW1q4plQMEMaUAB85JWWDAA== +"@tarojs/components@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@tarojs/components/-/components-3.4.3.tgz#f5397a2eaec0e37ee6630ef51a6819d9eb20bb27" + integrity sha512-isWSw9wqqYjbUyh7r3CE8hF2zqjpLi5b6yTwtrvHMEpwOzUjozkGJh7/ynrtzcYz4nki2Tffkg5snnqSgr5uNQ== dependencies: "@stencil/core" "2.9.0" - "@tarojs/taro" "3.4.1" + "@tarojs/taro" "3.4.3" better-scroll "^1.14.1" classnames "^2.2.5" intersection-observer "^0.7.0" @@ -1447,10 +1447,10 @@ swiper "6.8.0" weui "^1.1.2" -"@tarojs/helper@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@tarojs/helper/-/helper-3.4.1.tgz#e6641e9119a210703cf1c2712a5043c85595fd9b" - integrity sha512-czZ9FEvyY48pnaNHf5NL0Wj2BtJQPf9xisc6/7QYOA1ba7jpCmLCilW8ETX+Dvt4bqO2stZTVqUwvJmMJbRM3Q== +"@tarojs/helper@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@tarojs/helper/-/helper-3.4.3.tgz#68fbbdffbab3324ebe0ae39be71a93c99a113af4" + integrity sha512-B25xyjwHtCqrTvts6PQ8GzJTew0wdFaDpUL5mXCfETBy/y6jcE79A5SG4NpJgYiRjRHkj3AE1v8RPlJYcZ+ZsQ== dependencies: "@babel/core" "^7.14.5" "@babel/plugin-proposal-decorators" "^7.14.5" @@ -1460,7 +1460,7 @@ "@babel/preset-typescript" "^7.14.5" "@babel/register" "^7.14.5" "@babel/runtime" "^7.14.5" - "@tarojs/taro" "3.4.1" + "@tarojs/taro" "3.4.3" chalk "3.0.0" chokidar "^3.3.1" cross-spawn "^7.0.3" @@ -1471,28 +1471,29 @@ resolve "^1.6.0" yauzl "2.10.0" -"@tarojs/mini-runner@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@tarojs/mini-runner/-/mini-runner-3.4.1.tgz#5bc0df4c0e5ab62413f59fc5deffcacb9e4928c6" - integrity sha512-NmhxJDMvt3PhtgynxZ2Gd4x3Ss8ZP+x+BkoEezbH92Y1jQX7tz1rHAL98TJu9UJc7nb4LhUqCdoni7rmCPGpQg== +"@tarojs/mini-runner@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@tarojs/mini-runner/-/mini-runner-3.4.3.tgz#1af97ecb71e2eca372cb77aa5bea31e8f041b4a9" + integrity sha512-/dSOCZd0FK/Bm0TtQChY1i7BZ8XehdiI8eyE+9yJVZXuS/Ye7SOFdu1nHi1Q2O5nLCtlScwnlwlpwbWx6LN5kg== dependencies: "@babel/core" "^7.14.5" - "@tarojs/components" "3.4.1" - "@tarojs/helper" "3.4.1" - "@tarojs/plugin-platform-alipay" "3.4.1" - "@tarojs/plugin-platform-jd" "3.4.1" - "@tarojs/plugin-platform-qq" "3.4.1" - "@tarojs/plugin-platform-swan" "3.4.1" - "@tarojs/plugin-platform-tt" "3.4.1" - "@tarojs/plugin-platform-weapp" "3.4.1" - "@tarojs/react" "3.4.1" - "@tarojs/runner-utils" "3.4.1" - "@tarojs/runtime" "3.4.1" - "@tarojs/shared" "3.4.1" - "@tarojs/taro" "3.4.1" - "@tarojs/taro-loader" "3.4.1" + "@tarojs/components" "3.4.3" + "@tarojs/helper" "3.4.3" + "@tarojs/plugin-platform-alipay" "3.4.3" + "@tarojs/plugin-platform-jd" "3.4.3" + "@tarojs/plugin-platform-qq" "3.4.3" + "@tarojs/plugin-platform-swan" "3.4.3" + "@tarojs/plugin-platform-tt" "3.4.3" + "@tarojs/plugin-platform-weapp" "3.4.3" + "@tarojs/react" "3.4.3" + "@tarojs/runner-utils" "3.4.3" + "@tarojs/runtime" "3.4.3" + "@tarojs/shared" "3.4.3" + "@tarojs/taro" "3.4.3" + "@tarojs/taro-loader" "3.4.3" babel-loader "8.2.1" - babel-preset-taro "3.4.1" + babel-preset-taro "3.4.3" + convert-source-map "^1.8.0" copy-webpack-plugin "5.1.2" css-loader "3.4.2" csso-webpack-plugin "2.0.0-beta.1" @@ -1509,12 +1510,13 @@ mini-css-extract-plugin "0.9.0" miniprogram-simulate "^1.1.5" mkdirp "^1.0.4" + offset-sourcemap-lines "^1.0.1" ora "4.0.3" postcss "8.3.5" - postcss-html-transform "3.4.1" + postcss-html-transform "3.4.3" postcss-import "12.0.1" postcss-loader "4.3.0" - postcss-pxtransform "3.4.1" + postcss-pxtransform "3.4.3" postcss-url "8.0.0" regenerator-runtime "0.11" resolve "^1.6.0" @@ -1532,187 +1534,188 @@ webpack-chain "4.9.0" webpack-format-messages "^2.0.5" -"@tarojs/plugin-framework-react@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@tarojs/plugin-framework-react/-/plugin-framework-react-3.4.1.tgz#1f5e2495f59839933e1c226459d3469bff71828e" - integrity sha512-F9npUspPEkU1A8gkwPARYfAwF91n5KWprtyDY7Z9v3stK43MbXp56ycQJj0AHUgNPDnY+1zeXV+y4iohlx/NmA== +"@tarojs/plugin-framework-react@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@tarojs/plugin-framework-react/-/plugin-framework-react-3.4.3.tgz#622553beca40c6c777941cbda802aa0dbd5d6d3c" + integrity sha512-i+BkvLWhvpsJ3m6UZ4Q7Mga/VaS1aLUffnsk1DWWeBAapOPhFZsxBz4WX8ku8cno4+HO8I0xHGlG+Gs/XwuuRQ== dependencies: "@pmmmwh/react-refresh-webpack-plugin" "0.4.3" "@prefresh/webpack" "^3.2.3" - "@tarojs/runtime" "3.4.1" - "@tarojs/shared" "3.4.1" + "@tarojs/runtime" "3.4.3" + "@tarojs/shared" "3.4.3" acorn "^8.0.4" acorn-walk "^8.0.0" -"@tarojs/plugin-framework-vue2@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@tarojs/plugin-framework-vue2/-/plugin-framework-vue2-3.4.1.tgz#9293d8bc1f2b2d3569f9fa43cc08df17c5f976af" - integrity sha512-9xICVuJKMCY74qRqil2afYjb3ETa1j3feHkyl5iqJK6XJIhxuYHH0MZ/Eo8njVF1aagleU54V27BED9snTCafA== - dependencies: - "@tarojs/helper" "3.4.1" - "@tarojs/runner-utils" "3.4.1" - "@tarojs/runtime" "3.4.1" - "@tarojs/shared" "3.4.1" - -"@tarojs/plugin-framework-vue3@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@tarojs/plugin-framework-vue3/-/plugin-framework-vue3-3.4.1.tgz#effc55b5aca0b2386f4c623faebb0a647a347d15" - integrity sha512-ZTOOQgo4kXayI+587gP7mLPQgptRKVebJ49J/T1Hme7CBHJYNsygh07VVB1dgALt84Uk0M7zzE5+wbYpLmrFfQ== - dependencies: - "@tarojs/helper" "3.4.1" - "@tarojs/runner-utils" "3.4.1" - "@tarojs/runtime" "3.4.1" - "@tarojs/shared" "3.4.1" +"@tarojs/plugin-framework-vue2@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@tarojs/plugin-framework-vue2/-/plugin-framework-vue2-3.4.3.tgz#1bfeca952640a9000fa0a1321b2d0021ab624b08" + integrity sha512-QMyZi33mj4LOM1xb9OaapExR5bXMYUC4Kak7qHpmBEoYrEHbsP17PwUevkMBuxVLMdt3QDgo0eeiHIKStaIFow== + dependencies: + "@tarojs/helper" "3.4.3" + "@tarojs/runner-utils" "3.4.3" + "@tarojs/runtime" "3.4.3" + "@tarojs/shared" "3.4.3" + +"@tarojs/plugin-framework-vue3@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@tarojs/plugin-framework-vue3/-/plugin-framework-vue3-3.4.3.tgz#3006925d7e94709c2bf639e37a9aa51417a924b5" + integrity sha512-I6wnlxMelXMpeq+H6+lRr9LTvi0LDKBRBOJS9O1uQBahzF4lNXz8tH2L4Ur8lg9ibXbqQqVZNdWeEk9IFx7y5w== + dependencies: + "@tarojs/helper" "3.4.3" + "@tarojs/runner-utils" "3.4.3" + "@tarojs/runtime" "3.4.3" + "@tarojs/shared" "3.4.3" webpack "4.46.0" -"@tarojs/plugin-platform-alipay@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@tarojs/plugin-platform-alipay/-/plugin-platform-alipay-3.4.1.tgz#b017c7205c443a5f6c01843fa9151c4cb987d38c" - integrity sha512-ogqSIDDNwlAgsC3ZlNVLIUPg5VPEhu3oz6uUkjG0Op/GPstY4qh7+pMqMl0sBtOZ/dUrj2lMD4LRt3yIIXL7Yw== - dependencies: - "@tarojs/components" "3.4.1" - "@tarojs/service" "3.4.1" - "@tarojs/shared" "3.4.1" - -"@tarojs/plugin-platform-jd@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@tarojs/plugin-platform-jd/-/plugin-platform-jd-3.4.1.tgz#fcc7f64adacb3da9b9f348d252a94e369e208f04" - integrity sha512-MxWmOxlmh5ehsiRhhrzyXvzmUZqF2I2Fnh/Rz77zKr/uYSr4kUiOMsxLZWzS6BIaEkK61Fca1kXoUoLBo6gfUw== - dependencies: - "@tarojs/service" "3.4.1" - "@tarojs/shared" "3.4.1" - -"@tarojs/plugin-platform-qq@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@tarojs/plugin-platform-qq/-/plugin-platform-qq-3.4.1.tgz#adc25873feea37eb0ed54e066a75b6d80247d93a" - integrity sha512-MncmfOrFwRVIX8vWAqC8Wwf17OGFi5YyNPLtKx5VV75vdhFoXAad9nSUXQsEvkbgXA1R30e38Fau+lBs+pCHWQ== - dependencies: - "@tarojs/plugin-platform-weapp" "3.4.1" - "@tarojs/service" "3.4.1" - "@tarojs/shared" "3.4.1" - -"@tarojs/plugin-platform-swan@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@tarojs/plugin-platform-swan/-/plugin-platform-swan-3.4.1.tgz#511cdc27955c81bc8a304e5dd92aeba79530c68b" - integrity sha512-UxXUBdbA9CVf121GZi1FO1BXRWLKaqdCx9E+rhLbTtuCzNTBaFS6GbuGSLJiGZJJYSU5AV8QuQbTnGi/pO+JiQ== - dependencies: - "@tarojs/components" "3.4.1" - "@tarojs/service" "3.4.1" - "@tarojs/shared" "3.4.1" - -"@tarojs/plugin-platform-tt@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@tarojs/plugin-platform-tt/-/plugin-platform-tt-3.4.1.tgz#aa956820ecd113a2176ddbfc7b0d6b14ef26acaf" - integrity sha512-hNtsZIRcIHUz7/zAhSe66UhHtJ2u0PHB9byP5CaxgXIs979c8UWHUcLoM+UaqV37Xye2kZzxY08rdhvpBFStSg== - dependencies: - "@tarojs/service" "3.4.1" - "@tarojs/shared" "3.4.1" - -"@tarojs/plugin-platform-weapp@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@tarojs/plugin-platform-weapp/-/plugin-platform-weapp-3.4.1.tgz#1e44aa5fee2e9d467497c284d7665e1e4f64bf8d" - integrity sha512-lBQd7WYW9tk7l0tDeqqNc4yEoDRYt89y6/LAAWF7scOSQlKBwAwq/CofECnSCwtk4yjOHG5AXvxBjTENswIYww== - dependencies: - "@tarojs/components" "3.4.1" - "@tarojs/service" "3.4.1" - "@tarojs/shared" "3.4.1" - -"@tarojs/react@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@tarojs/react/-/react-3.4.1.tgz#14c61876a3cabd750ddb30b0aa47df0104453837" - integrity sha512-IHADCOy/3NP9qcDi8KQBN6+YzHFKGgDhhMu+K58lLnsjiaFZc+8cXJ3QQfZm+xsFqQwil6j3OMWk16wY6Q0FEg== - dependencies: - "@tarojs/runtime" "3.4.1" - "@tarojs/shared" "3.4.1" +"@tarojs/plugin-platform-alipay@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@tarojs/plugin-platform-alipay/-/plugin-platform-alipay-3.4.3.tgz#821726cd313d957dd09736a3729565add90f1629" + integrity sha512-ATJDarJvf4gab/6wmtYS5Nks8VAZYL3hLzYDnodJpC8pZ84PujTn6+ByLsDRGeaDuKwWWxXMxXiOnLr3Ls9SvQ== + dependencies: + "@tarojs/components" "3.4.3" + "@tarojs/service" "3.4.3" + "@tarojs/shared" "3.4.3" + +"@tarojs/plugin-platform-jd@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@tarojs/plugin-platform-jd/-/plugin-platform-jd-3.4.3.tgz#9dbcf281d9b0bb31e47b21fbf5021c2a57aaa0b9" + integrity sha512-qhxtobgzv/1iepDqIsycuCwh1Pi8g3M5mMiGhnS8VWn2ibkSO4QLaPodckpqfkhlLpjNSigGPb0YvTb6zZGhvQ== + dependencies: + "@tarojs/service" "3.4.3" + "@tarojs/shared" "3.4.3" + +"@tarojs/plugin-platform-qq@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@tarojs/plugin-platform-qq/-/plugin-platform-qq-3.4.3.tgz#e8d543279c4d542e39cf99939274058d4045e630" + integrity sha512-bfuzqPva/TxH2CiUouLDtlNiKKeY8jyKfSByySdv4rHKqGcPUul8R4xMd8VaCRnBFmFZjPhvtgshGr86opM4dg== + dependencies: + "@tarojs/plugin-platform-weapp" "3.4.3" + "@tarojs/service" "3.4.3" + "@tarojs/shared" "3.4.3" + +"@tarojs/plugin-platform-swan@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@tarojs/plugin-platform-swan/-/plugin-platform-swan-3.4.3.tgz#d597a6553fc50d1d7e1ac059a027a54bfd79960a" + integrity sha512-5oZi39Jr5qI+zcskFpyvMDFeYZYbKxCdEyQ0NLokQ1Im2BHmg5vYMoUTg2e0i77wmg0cMhovVQ6azfDJq8ve+Q== + dependencies: + "@tarojs/components" "3.4.3" + "@tarojs/service" "3.4.3" + "@tarojs/shared" "3.4.3" + +"@tarojs/plugin-platform-tt@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@tarojs/plugin-platform-tt/-/plugin-platform-tt-3.4.3.tgz#21e66e08adfcf45683a616cc70fc9a33823275ba" + integrity sha512-4bf2RcaTnygVKNLqRvgXWdcbh4hMcmw/UFLJPeKfw+IMVukSFXN/ro91Y9PY+WYpqqwUNygWeTR0YS0KN2c9Yg== + dependencies: + "@tarojs/components" "3.4.3" + "@tarojs/service" "3.4.3" + "@tarojs/shared" "3.4.3" + +"@tarojs/plugin-platform-weapp@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@tarojs/plugin-platform-weapp/-/plugin-platform-weapp-3.4.3.tgz#d54a366b70bb4c099b50f9a2bb8b534623dc8695" + integrity sha512-7mBr3/vdZ+0Ijz5BPmfLyveE46cTlU/4qLIQHuYhBPEf91j8VzTJUVWiavhv6Suz+VyNmyV+sBwBKjqabFHPaQ== + dependencies: + "@tarojs/components" "3.4.3" + "@tarojs/service" "3.4.3" + "@tarojs/shared" "3.4.3" + +"@tarojs/react@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@tarojs/react/-/react-3.4.3.tgz#c7974a34ff223dba6d44e422c0a4c4da8ade9a5e" + integrity sha512-32CIU0JZBVnZS1ADpFae67qIFr/lvmeDnd3RSJRz0oluEFyk64StIhXjgfaPXkMe64v7JbIFlx4a8yOZN14DXg== + dependencies: + "@tarojs/runtime" "3.4.3" + "@tarojs/shared" "3.4.3" react-reconciler "0.26.1" scheduler "^0.20.1" -"@tarojs/router@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@tarojs/router/-/router-3.4.1.tgz#f53ca1cdde19dc98c0426876e9c28afed5df711d" - integrity sha512-u0siXz8B6gvhI3g5EGpgBdzP2XCLfoD8SVIg6ZackzW0NMm4qFM73qGS7ZSIrasVqVRNAh3EEOdfjEKUH9EFXw== +"@tarojs/router@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@tarojs/router/-/router-3.4.3.tgz#37f669decc3a1b39544f0798ea947d40f7e7ab83" + integrity sha512-di3BQZNqwZTY+H8PT1Pv2tK+o646bTJicN3f7hW97FthYEYyO8SvlyoG21inuB8tRm0yxKtk/sjCvCZTyB5lwQ== dependencies: - "@tarojs/runtime" "3.4.1" - "@tarojs/taro" "3.4.1" + "@tarojs/runtime" "3.4.3" + "@tarojs/taro" "3.4.3" history "^5.1.0" query-string "^6.13.8" universal-router "^8.3.0" url-parse "^1.4.7" -"@tarojs/runner-utils@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@tarojs/runner-utils/-/runner-utils-3.4.1.tgz#6acd49e4b797286d5ffc7cd4dfd2fd147e07afa4" - integrity sha512-g689vpV0S8GsExV1IyqloIZB3OSoNpjzMQceIGW582beDf8KqlOEM8UTjFgF0wzKLvP8gtpfr2kW3yJruWUExw== +"@tarojs/runner-utils@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@tarojs/runner-utils/-/runner-utils-3.4.3.tgz#4c3d6c021d7d21250f8fa57b4c4feb068cfab253" + integrity sha512-UuyEhHxLdlXD1fn2y4iKG3J6W01t+mO7TF1YHWBmDbzC1ERZgaaPE/VLXQBIk7cS+izHJj9lPX+9Kjw2SBMaDg== dependencies: - "@tarojs/helper" "3.4.1" + "@tarojs/helper" "3.4.3" scss-bundle "^3.0.2" -"@tarojs/runtime@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@tarojs/runtime/-/runtime-3.4.1.tgz#71c2239771e7755a076367ac284e0a487d8a9c1c" - integrity sha512-jPh1P/S6JU9lZyC1KOEJy0sE2QRBpDZKQJqRnOu5nCylZzxaZ2TU1ACmnfuNnUX7/CwWt5f/y+h0mVFpvv9hwA== +"@tarojs/runtime@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@tarojs/runtime/-/runtime-3.4.3.tgz#cf9fa425076387d4d2e6bd8b0efdde710587d0de" + integrity sha512-0NhQIGkw/Mu9b1Sh1XXaKvvCCVLHUDZfZQnVWDOSRY7zDM7y05PdzwTEZFCWjiPufY5+U6PfKFMBfJiO3JPRvA== dependencies: - "@tarojs/shared" "3.4.1" + "@tarojs/shared" "3.4.3" inversify "5.1.1" lodash-es "4.17.15" reflect-metadata "^0.1.13" -"@tarojs/service@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@tarojs/service/-/service-3.4.1.tgz#09817eb3283db368dad4ce0c11e0824959411478" - integrity sha512-hRfU8QJzq17WR+isetROipqaMwRLLLmlMV12bf5y8XGKYUEsDd+OGviN7Rivno9NCcRmP144H2c693W8p8HH0Q== +"@tarojs/service@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@tarojs/service/-/service-3.4.3.tgz#310d47b89abeaf482ac8752b55d52815207de114" + integrity sha512-sSjxBVIC+rkGtf9kdvy/Wr3KLj+CNavSzsLHbMtvF2f8b3YxPDygNNngWCKxYXOlbFgHDb26FZtO6o7VucGlFw== dependencies: "@hapi/joi" "17.1.1" - "@tarojs/helper" "3.4.1" - "@tarojs/shared" "3.4.1" - "@tarojs/taro" "3.4.1" + "@tarojs/helper" "3.4.3" + "@tarojs/shared" "3.4.3" + "@tarojs/taro" "3.4.3" fs-extra "^8.0.1" lodash "^4.17.21" resolve "^1.6.0" tapable "^1.1.3" webpack-merge "^4.2.2" -"@tarojs/shared@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@tarojs/shared/-/shared-3.4.1.tgz#529ff63f52b936573d225856c4f7c6902848592f" - integrity sha512-X9LBS/TPBRsDjXj9+wynWQepdCY2jcPEJrpKdOL9Z+lEbvRABhnTOUjuaRKIkBJ+lLRg3/Xf8y1Oln+gnajKQQ== +"@tarojs/shared@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@tarojs/shared/-/shared-3.4.3.tgz#a6c0993a3c2f8939ab47d63e1b96d6f9f007f810" + integrity sha512-tCVuDI7UV5YMC9tv/GlGXxfzc5FGlZajZZ2rwLrG+QXeIyMD5Zi1psz4Ad38cpVxlw5rFuv1dgSHcs6d3zKMhg== -"@tarojs/taro-h5@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@tarojs/taro-h5/-/taro-h5-3.4.1.tgz#ad6ae7d88eb4afd9548d78d03010edf066a82a6c" - integrity sha512-hvwnWJ/EWzHNO5+3QVp6Nb6mJ5e4YCETVeTe2dQrKqbjew8w/DHxu6OzHJP6WlVw+WZHrlIUc5FfSuSIeDisbw== +"@tarojs/taro-h5@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@tarojs/taro-h5/-/taro-h5-3.4.3.tgz#9568bbc650744e89b0d406c98d6175d4605221f4" + integrity sha512-LdBQsp/Cfe9oPRnZYVEWzJYxeWrR+vEFXXI5stzIvUk0YAJ616c+OLaZgYnW7FVIIBy7pTqVSVhlJuF9+2pb0Q== dependencies: - "@tarojs/api" "3.4.1" - "@tarojs/router" "3.4.1" - "@tarojs/runtime" "3.4.1" - "@tarojs/taro" "3.4.1" + "@tarojs/api" "3.4.3" + "@tarojs/router" "3.4.3" + "@tarojs/runtime" "3.4.3" + "@tarojs/taro" "3.4.3" base64-js "^1.3.0" jsonp-retry "^1.0.3" mobile-detect "^1.4.2" whatwg-fetch "^3.4.0" -"@tarojs/taro-loader@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@tarojs/taro-loader/-/taro-loader-3.4.1.tgz#d82a06fa824e2a0b5222006f0f46f8e575445bd1" - integrity sha512-ziXQJ5VtfJ6V3OsAyshKWTyRlox6W8mmTvaGM1M6leyXcZ8bEM/9HbR92DEViZNoqx1eDcko7ceSgxX5qHVsXg== +"@tarojs/taro-loader@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@tarojs/taro-loader/-/taro-loader-3.4.3.tgz#eca8216ab548bd1ec283e00e3e96217b6fa60680" + integrity sha512-b06EPFG4q+J8/jnDeYglxpQMxjgElzDjH0jkS8U4/dN8Q81r4bDhYlI10tpt8wnPqB6TIUSdm6xZAzr510zaRw== dependencies: - "@tarojs/helper" "3.4.1" - "@tarojs/taro" "3.4.1" + "@tarojs/helper" "3.4.3" + "@tarojs/taro" "3.4.3" loader-utils "^1.2.3" -"@tarojs/taro@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@tarojs/taro/-/taro-3.4.1.tgz#05b34cfdb363216985c428cc84b2067c0ec7dec0" - integrity sha512-10ubTVi4cAgFws1mMJPOgDTWyW+eeMTVwJkB0EfLe3nsZ/tK0w2+ulwMh5At60Tj4mWGzrSF6U4SWZRY4H5Ldw== +"@tarojs/taro@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@tarojs/taro/-/taro-3.4.3.tgz#b98f4becb47564f1b6d525f8737c0c454f554ce1" + integrity sha512-dg4zjc9s+CxNFOl4On7dAnBJu6Xt2GAsyFOeNcNKlgkNPZPruYXOzAgsvepUwZ98xjYeWrpSVGekG4xi7FGnog== dependencies: - "@tarojs/api" "3.4.1" - "@tarojs/runtime" "3.4.1" - "@tarojs/taro-h5" "3.4.1" + "@tarojs/api" "3.4.3" + "@tarojs/runtime" "3.4.3" + "@tarojs/taro-h5" "3.4.3" -"@tarojs/taroize@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@tarojs/taroize/-/taroize-3.4.1.tgz#7a09a171fdd47e945c84014518b72d7c02bc782e" - integrity sha512-ED+shCfY7JqDjX9ev9Ip6eesf1k5q+XSbcj6CI8Yn1nNVqPeCpXPSOXF5bUlWReqP8NXUkvdeXKzTWIUfL/xYA== +"@tarojs/taroize@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@tarojs/taroize/-/taroize-3.4.3.tgz#acb27b0d94bf4fe1f7da1f6810942b2f86fefc82" + integrity sha512-/312pKn9HE3N8tpuQf7GH/yHTUIUNI0BehCK/F8YoIljOImcs1/VM6a7mUcbxrFgB0tVz5LHu01b1tUE7iwYWA== dependencies: "@babel/code-frame" "^7.14.5" babel-core "^6.26.3" @@ -1757,32 +1760,23 @@ prettier "^1.14.2" typescript "^3.2.2" -"@tarojs/webpack-runner@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@tarojs/webpack-runner/-/webpack-runner-3.4.1.tgz#d40850b03e05d0a4bccd2c1fb113639a5dc05029" - integrity sha512-/JSau6c0HDqqi2vrqatvrs8RtaRRCpqsE4O8uBxRyzDXd6jhWO7ZvTEbJEQICbS3dGwcpCofe7hLmjfO4213jg== +"@tarojs/webpack-runner@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@tarojs/webpack-runner/-/webpack-runner-3.4.3.tgz#0c4fdb6d4191319380cc843a501d150828dd4366" + integrity sha512-e95sYsM7RXejMmOWpB8ni038x+giFNm4odNRuYjeh5I66soxGjsdwrZXVecwC3AbjVH7+EMcLkiuHeJBqSyILw== dependencies: - "@babel/core" "^7.14.5" - "@tarojs/components" "3.4.1" - "@tarojs/helper" "3.4.1" - "@tarojs/plugin-framework-react" "3.4.1" - "@tarojs/plugin-framework-vue2" "3.4.1" - "@tarojs/plugin-framework-vue3" "3.4.1" - "@tarojs/runner-utils" "3.4.1" - "@tarojs/runtime" "3.4.1" - "@tarojs/shared" "3.4.1" - "@tarojs/taro" "3.4.1" - "@tarojs/taro-loader" "3.4.1" + "@tarojs/helper" "3.4.3" + "@tarojs/runner-utils" "3.4.3" + "@tarojs/taro" "3.4.3" + "@tarojs/taro-loader" "3.4.3" autoprefixer "^9.7.4" babel-loader "8.2.1" - babel-preset-taro "3.4.1" copy-webpack-plugin "5.1.2" css-loader "3.4.2" csso-webpack-plugin "2.0.0-beta.1" detect-port "^1.3.0" file-loader "^6.0.0" fs-extra "^8.0.1" - html-webpack-include-assets-plugin "1.0.5" html-webpack-plugin "3.2.0" less "^4.1.0" less-loader "7.3.0" @@ -1792,9 +1786,8 @@ ora "4.0.3" postcss "8.3.5" postcss-loader "4.3.0" - postcss-plugin-constparse "3.4.1" - postcss-pxtransform "3.4.1" - react-refresh "0.9.0" + postcss-plugin-constparse "3.4.3" + postcss-pxtransform "3.4.3" resolve "^1.6.0" resolve-url-loader "3.1.3" sass "1.32.11" @@ -2942,6 +2935,16 @@ babel-plugin-jsx-attributes-array-to-object@0.3.0: resolved "https://registry.yarnpkg.com/babel-plugin-jsx-attributes-array-to-object/-/babel-plugin-jsx-attributes-array-to-object-0.3.0.tgz#ac7b551a2407750ac899460fe5e38b1dceaebed1" integrity sha512-XvbCsBFo/y4n2DzRtICQ60Kb3FWPIK359YsUkDPjC4UBCF/FMENKYzxarEhAD1GnrAuui5wOUvli89yqF1IzdA== +babel-plugin-minify-dead-code-elimination@0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.1.tgz#1a0c68e44be30de4976ca69ffc535e08be13683f" + integrity sha512-x8OJOZIrRmQBcSqxBcLbMIK8uPmTvNWPXH2bh5MDCW1latEqYiRMuUkPImKcfpo59pTUB2FT7HfcgtG8ZlR5Qg== + dependencies: + babel-helper-evaluate-path "^0.5.0" + babel-helper-mark-eval-scopes "^0.4.3" + babel-helper-remove-or-void "^0.4.3" + lodash "^4.17.11" + babel-plugin-minify-dead-code@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/babel-plugin-minify-dead-code/-/babel-plugin-minify-dead-code-1.3.2.tgz#7cd45c95c52700f00680a37377e00accad45b188" @@ -3064,23 +3067,23 @@ babel-plugin-transform-imports-api@1.0.0: dependencies: is-invalid-path "^1.0.2" -babel-plugin-transform-react-jsx-to-rn-stylesheet@3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-to-rn-stylesheet/-/babel-plugin-transform-react-jsx-to-rn-stylesheet-3.4.1.tgz#8cecfa7a018164afc2c23d14bca0409cbf246f72" - integrity sha512-5ZsYUS0/mb3B+GdowFVdNINpWySLa1Nu5DSytWuu4wf15/+nBsm426TtSk4m3p98AnOQDKfzvtKzRGzJP2JMaw== +babel-plugin-transform-react-jsx-to-rn-stylesheet@3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-to-rn-stylesheet/-/babel-plugin-transform-react-jsx-to-rn-stylesheet-3.4.3.tgz#08b73d0b25eb65db664b12d0a7d9d53e52b90ee7" + integrity sha512-EuOZuQIPrtTcKW1fHdAVCbNxZKq5gPfdjtl9GFjLpX9g1WJhnlIyAMVkZQNToP5amY8+i+qoiGsA5V0V8DRrPg== dependencies: camelize "^1.0.0" - taro-css-to-react-native "3.4.1" + taro-css-to-react-native "3.4.3" -babel-plugin-transform-taroapi@3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-taroapi/-/babel-plugin-transform-taroapi-3.4.1.tgz#7d5397bc546c5f7c34cd4bde1b9af740ef10225c" - integrity sha512-ve+tOxgr/ZAw4pxqeTgOE1YJek8xHwxvGYb7UJV9B51s8Q2+tVSQGzDQ6LZqyR0l7XW8RAuWESaeK1V5+2oxNA== +babel-plugin-transform-taroapi@3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-taroapi/-/babel-plugin-transform-taroapi-3.4.3.tgz#20b05b3414af85779659b67a1ac682939a9e4684" + integrity sha512-8KNt8iPbF/ASmtXTrWN2/C+v36+pFDnuPahNR8q8cCnOdpKNEJyOrHmfoYMLoQ7xVTynV8N1/mLUqSzyB3kzyQ== -babel-preset-taro@3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/babel-preset-taro/-/babel-preset-taro-3.4.1.tgz#6e71a3358c12d60ec1ae44eba3cd5fe678007c4f" - integrity sha512-tJIT8FryN1AxdV0ed21zeYC3RlbyowPF2SbUY7K4TgCOWBF96b0jTFYn8XTLBCYNdyCemuqsm//HhKJIaD4kLw== +babel-preset-taro@3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/babel-preset-taro/-/babel-preset-taro-3.4.3.tgz#765ff9fd57d65252a51b3e87d072b8b935a8abaa" + integrity sha512-11ctbBlK24e3W2Dyb9aULymRYcupn48o2K9zNy7qqHRWk4u0rkm0scS2qOf8jBjnFNxZqvwV/hM+LsuevEY3NQ== dependencies: "@babel/plugin-proposal-class-properties" "^7.14.5" "@babel/plugin-proposal-decorators" "^7.14.5" @@ -3092,16 +3095,17 @@ babel-preset-taro@3.4.1: "@babel/runtime" "^7.14.5" "@babel/runtime-corejs3" "^7.14.5" "@prefresh/babel-plugin" "^0.4.1" - "@tarojs/helper" "3.4.1" - "@tarojs/taro-h5" "3.4.1" + "@tarojs/helper" "3.4.3" + "@tarojs/taro-h5" "3.4.3" "@vue/babel-plugin-jsx" "^1.0.6" "@vue/babel-preset-jsx" "^1.2.4" babel-plugin-dynamic-import-node "2.3.3" babel-plugin-global-define "1.0.3" babel-plugin-jsx-attributes-array-to-object "0.3.0" + babel-plugin-minify-dead-code-elimination "0.5.1" babel-plugin-transform-imports-api "1.0.0" - babel-plugin-transform-react-jsx-to-rn-stylesheet "3.4.1" - babel-plugin-transform-taroapi "3.4.1" + babel-plugin-transform-react-jsx-to-rn-stylesheet "3.4.3" + babel-plugin-transform-taroapi "3.4.3" core-js "^3.6.5" metro-react-native-babel-preset "^0.66.2" react-refresh "0.9.0" @@ -4270,7 +4274,7 @@ convert-source-map@^0.3.3: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= -convert-source-map@^1.1.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1, convert-source-map@^1.7.0: +convert-source-map@^1.1.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1, convert-source-map@^1.7.0, convert-source-map@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== @@ -5408,10 +5412,10 @@ escodegen@^1.11.1: optionalDependencies: source-map "~0.6.1" -eslint-config-taro@3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/eslint-config-taro/-/eslint-config-taro-3.4.1.tgz#73878334fd45097627592c1ad58f802b637e7d97" - integrity sha512-BTsw22lY6I9eBBhS7+CETPDRKCPmFkIohh6aXire3zEDUACp/FkNUK40XgAtRYun61oYC3CPxjskz7KUDI+t4A== +eslint-config-taro@3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-config-taro/-/eslint-config-taro-3.4.3.tgz#ed6727ccea76b5a5539c2653f9b6a4ca2ebc85de" + integrity sha512-7YJ/VskQCC93rwi95YEj8ZlfZ6cRfjFr0fPDF+6tuaulNuVkXCpU78NzbN3CxvHUmaXpI+XYEJeGLppYqVSojA== dependencies: "@typescript-eslint/parser" "^4.15.1" babel-eslint "^10.0.0" @@ -7053,15 +7057,6 @@ html-tags@^3.1.0: resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== -html-webpack-include-assets-plugin@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/html-webpack-include-assets-plugin/-/html-webpack-include-assets-plugin-1.0.5.tgz#12770c227290451633351b5ed72dda8ce8c0642e" - integrity sha512-YkkzE+QfYAuEq8/yEnfTcpCeSLyJ8XmB2LlQzY1GV7/ovDxavcCIKSMF4kIMRrWmFMPU8qog/zvBaQ1RJFFw/g== - dependencies: - glob "^7.1.3" - minimatch "^3.0.4" - slash "^2.0.0" - html-webpack-plugin@3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" @@ -9671,6 +9666,13 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== +offset-sourcemap-lines@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/offset-sourcemap-lines/-/offset-sourcemap-lines-1.0.1.tgz#5854dff74b73fc06efcb61d7b721a8113d99be92" + integrity sha1-WFTf90tz/Abvy2HXtyGoET2ZvpI= + dependencies: + source-map "^0.5.0" + omit.js@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/omit.js/-/omit.js-1.0.2.tgz#91a14f0eba84066dfa015bf30e474c47f30bc858" @@ -10288,10 +10290,10 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -postcss-html-transform@3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/postcss-html-transform/-/postcss-html-transform-3.4.1.tgz#8099b930c665cad77d81243e6ed1ea1633eb1af7" - integrity sha512-LOlzkYKR6mlNygERLUK5pKSXKT6rCElegWDXvwePbfYoHsvVj8vDsikBobULVjI1TTpTw1MYQLralBLm3rdTUA== +postcss-html-transform@3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/postcss-html-transform/-/postcss-html-transform-3.4.3.tgz#d4524f97ce4d7c6021992551ccbba92f79a3b286" + integrity sha512-vX9TmorQVvMKhr4gVYnezImk8njZgxgc5Ho6RYGpKYbjY7qvp1pu3dlB7odJQrOLGy9YO03TND1WJthBIss6hQ== dependencies: postcss "^6.0.22" @@ -10430,17 +10432,17 @@ postcss-modules-values@^3.0.0: icss-utils "^4.0.0" postcss "^7.0.6" -postcss-plugin-constparse@3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/postcss-plugin-constparse/-/postcss-plugin-constparse-3.4.1.tgz#d84265d3ce538996e05e21c92dce0f95104ddec3" - integrity sha512-mKfZioiap4tYJqcv996rqGgEtvvMBl5jnlFruyPg1UoPoTHAAKw2NzoyJwD8KKN/zSWA73YHoh8uw+imSvKYDA== +postcss-plugin-constparse@3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/postcss-plugin-constparse/-/postcss-plugin-constparse-3.4.3.tgz#2d5e2a4bbe0e69816cdce96821b25c4e25afafd3" + integrity sha512-qmHpcjUHaNdwFdzcDSnKyq859etxFwGlbhuwr+d/a05K/P6fUimJH/hCmLkdSkA7nuqJSsq+pmKEYrp1MS7zeg== dependencies: postcss "^6.0.22" -postcss-pxtransform@3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/postcss-pxtransform/-/postcss-pxtransform-3.4.1.tgz#56aa93110a01bf551ed606efafd80f8f1cde6c44" - integrity sha512-myFXzOctrC018ur57+LZsu9VpCzPmggLsPsF81A3faV64DL7dXQ6wSD2ms07wHWlj9WGw44O5P4EQXd5pPGU1A== +postcss-pxtransform@3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/postcss-pxtransform/-/postcss-pxtransform-3.4.3.tgz#9844188ac01e6b71bf2b1c749427dd9c6658bf2d" + integrity sha512-hZQ6FqOT8f0wIw3LmArdMHe1iODDORJR6PPtM782BFLfWLP1Vwkv9LbusfiivIoM8+lUx1Op4Zua+DLEt0Uucg== dependencies: postcss "^6.0.22" @@ -12771,10 +12773,10 @@ tar@^6.0.2: mkdirp "^1.0.3" yallist "^4.0.0" -taro-css-to-react-native@3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/taro-css-to-react-native/-/taro-css-to-react-native-3.4.1.tgz#817399c5317901e4c5e4ba2fff02a98c878ed879" - integrity sha512-OStE73xDv2yZSpZrxbSdP/k2jEmBwNbZb3/8O2dj7TQy0S747xA4UJvzVwLiTgsZpfvYagfcOez57p+c5iC6Zg== +taro-css-to-react-native@3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/taro-css-to-react-native/-/taro-css-to-react-native-3.4.3.tgz#0a1ccd701acdbfc792fb4970cf5f2125cfde390a" + integrity sha512-4NNtys2mo6x9nmh+nnxZl3FyqyERY/dLeZoZwYYIJHZ52CruvPo0x3f+G4KKEBMOzcoMFHY60SkrF6YMWKI9Tw== dependencies: camelize "^1.0.0" css "^2.2.4" diff --git a/packages/taro-alipay/src/index.ts b/packages/taro-alipay/src/index.ts index a1437f6f71fe..5f9261831419 100644 --- a/packages/taro-alipay/src/index.ts +++ b/packages/taro-alipay/src/index.ts @@ -73,7 +73,7 @@ ${main}` } const pluginJSON = JSON.parse(assets['/plugin/plugin.json'].source()) pluginJSON.publicPages = pluginJSON.pages - delete pluginJSON.pages + pluginJSON.pages = Object.values(pluginJSON.publicPages) const pluginJSONStr = JSON.stringify(pluginJSON, null, 2) assets['/plugin/plugin.json'] = { size: () => pluginJSONStr.length, diff --git a/packages/taro-loader/src/native-component.ts b/packages/taro-loader/src/native-component.ts index 31aa0bd18daf..8f4c463c48f2 100644 --- a/packages/taro-loader/src/native-component.ts +++ b/packages/taro-loader/src/native-component.ts @@ -20,6 +20,7 @@ export default function (this: webpack.loader.LoaderContext) { : this.request.split('!').slice(thisLoaderIndex + 1).join('!') const runtimePath = Array.isArray(options.runtimePath) ? options.runtimePath : [options.runtimePath] const setReconciler = runtimePath.reduce((res, item) => { + if (/^@tarojs\/plugin-(react|vue)-devtools/.test(item)) return res return res + `import '${item}'\n` }, '') const { globalObject } = this._compilation.outputOptions @@ -35,7 +36,7 @@ import { container, SERVICE_IDENTIFIER } from '@tarojs/runtime' import { createNativeComponentConfig } from '${creatorLocation}' ${importFrameworkStatement} var hooks = container.get(SERVICE_IDENTIFIER.Hooks) -hooks.initNativeApiImpls = [defaultReconciler.initNativeApi] +hooks.initNativeApiImpls = (hooks.initNativeApiImpls || []).concat(defaultReconciler.initNativeApi) var component = require(${stringify(componentPath)}).default var config = ${configString}; var inst = Component(createNativeComponentConfig(component, ${frameworkArgs})) diff --git a/packages/taro-mini-runner/src/__tests__/__snapshots__/alipay.spec.ts.snap b/packages/taro-mini-runner/src/__tests__/__snapshots__/alipay.spec.ts.snap index 8719bf1540da..9a373846095c 100644 --- a/packages/taro-mini-runner/src/__tests__/__snapshots__/alipay.spec.ts.snap +++ b/packages/taro-mini-runner/src/__tests__/__snapshots__/alipay.spec.ts.snap @@ -564,33 +564,6 @@ require(\\"./taro\\"); __webpack_require__.r(__webpack_exports__); var runtime = __webpack_require__(13); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { @@ -631,6 +604,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -641,7 +629,23 @@ require(\\"./taro\\"); var createClass = __webpack_require__(5); var inherits = __webpack_require__(7); var createSuper = __webpack_require__(6); + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } var taro = __webpack_require__(1); + var reactMeta = { + PageContext: taro[\\"a\\"], + R: taro[\\"a\\"] + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -666,8 +670,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = taro[\\"a\\"]; - var R$1 = taro[\\"a\\"]; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (Object(taro[\\"d\\"])(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (Object(taro[\\"c\\"])(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -707,8 +791,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === taro[\\"a\\"]) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === taro[\\"a\\"]) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -730,7 +814,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -756,18 +840,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -780,7 +864,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -819,7 +903,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -909,88 +993,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (Object(taro[\\"d\\"])(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (Object(taro[\\"c\\"])(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -1053,15 +1056,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === taro[\\"a\\"]) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -1099,7 +1107,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -1116,7 +1124,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { diff --git a/packages/taro-mini-runner/src/__tests__/__snapshots__/babel.spec.ts.snap b/packages/taro-mini-runner/src/__tests__/__snapshots__/babel.spec.ts.snap index 3ea206882e72..b4d8ef793cbf 100644 --- a/packages/taro-mini-runner/src/__tests__/__snapshots__/babel.spec.ts.snap +++ b/packages/taro-mini-runner/src/__tests__/__snapshots__/babel.spec.ts.snap @@ -365,33 +365,6 @@ require(\\"./taro\\"); mergeReconciler(hostConfig); mergeInternalComponents(runtime_components); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { @@ -432,6 +405,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -442,6 +430,22 @@ require(\\"./taro\\"); var createClass = __webpack_require__(2); var inherits = __webpack_require__(4); var createSuper = __webpack_require__(3); + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + var reactMeta = { + PageContext: EMPTY_OBJ, + R: EMPTY_OBJ + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -466,8 +470,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = EMPTY_OBJ; - var R$1 = EMPTY_OBJ; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (isFunction(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (isArray(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -507,8 +591,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === EMPTY_OBJ) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -530,7 +614,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -556,18 +640,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -580,7 +664,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -619,7 +703,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -709,88 +793,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (isFunction(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (isArray(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -853,15 +856,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -899,7 +907,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -916,7 +924,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { diff --git a/packages/taro-mini-runner/src/__tests__/__snapshots__/bytedance.spec.ts.snap b/packages/taro-mini-runner/src/__tests__/__snapshots__/bytedance.spec.ts.snap index a6b35faabeb9..7be721955de1 100644 --- a/packages/taro-mini-runner/src/__tests__/__snapshots__/bytedance.spec.ts.snap +++ b/packages/taro-mini-runner/src/__tests__/__snapshots__/bytedance.spec.ts.snap @@ -77,33 +77,6 @@ require(\\"./taro\\"); mergeReconciler(hostConfig); mergeInternalComponents(runtime_components); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { @@ -144,6 +117,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -154,6 +142,22 @@ require(\\"./taro\\"); var createClass = __webpack_require__(4); var inherits = __webpack_require__(6); var createSuper = __webpack_require__(5); + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + var reactMeta = { + PageContext: EMPTY_OBJ, + R: EMPTY_OBJ + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -178,8 +182,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = EMPTY_OBJ; - var R$1 = EMPTY_OBJ; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (isFunction(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (isArray(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -219,8 +303,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === EMPTY_OBJ) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -242,7 +326,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -268,18 +352,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -292,7 +376,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -331,7 +415,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -421,88 +505,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (isFunction(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (isArray(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -565,15 +568,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -611,7 +619,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -628,7 +636,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { diff --git a/packages/taro-mini-runner/src/__tests__/__snapshots__/common-style.spec.ts.snap b/packages/taro-mini-runner/src/__tests__/__snapshots__/common-style.spec.ts.snap index 65a1963d5da9..95976d8b1e7d 100644 --- a/packages/taro-mini-runner/src/__tests__/__snapshots__/common-style.spec.ts.snap +++ b/packages/taro-mini-runner/src/__tests__/__snapshots__/common-style.spec.ts.snap @@ -365,33 +365,6 @@ require(\\"./taro\\"); mergeReconciler(hostConfig); mergeInternalComponents(runtime_components); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { @@ -432,6 +405,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -442,6 +430,22 @@ require(\\"./taro\\"); var createClass = __webpack_require__(3); var inherits = __webpack_require__(5); var createSuper = __webpack_require__(4); + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + var reactMeta = { + PageContext: EMPTY_OBJ, + R: EMPTY_OBJ + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -466,8 +470,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = EMPTY_OBJ; - var R$1 = EMPTY_OBJ; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (isFunction(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (isArray(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -507,8 +591,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === EMPTY_OBJ) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -530,7 +614,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -556,18 +640,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -580,7 +664,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -619,7 +703,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -709,88 +793,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (isFunction(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (isArray(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -853,15 +856,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -899,7 +907,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -916,7 +924,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { diff --git a/packages/taro-mini-runner/src/__tests__/__snapshots__/compiler-macros.spec.ts.snap b/packages/taro-mini-runner/src/__tests__/__snapshots__/compiler-macros.spec.ts.snap index b189628d48ac..8763723301f7 100644 --- a/packages/taro-mini-runner/src/__tests__/__snapshots__/compiler-macros.spec.ts.snap +++ b/packages/taro-mini-runner/src/__tests__/__snapshots__/compiler-macros.spec.ts.snap @@ -365,33 +365,6 @@ require(\\"./taro\\"); mergeReconciler(hostConfig); mergeInternalComponents(runtime_components); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { @@ -432,6 +405,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -442,6 +430,22 @@ require(\\"./taro\\"); var createClass = __webpack_require__(2); var inherits = __webpack_require__(4); var createSuper = __webpack_require__(3); + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + var reactMeta = { + PageContext: EMPTY_OBJ, + R: EMPTY_OBJ + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -466,8 +470,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = EMPTY_OBJ; - var R$1 = EMPTY_OBJ; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (isFunction(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (isArray(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -507,8 +591,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === EMPTY_OBJ) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -530,7 +614,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -556,18 +640,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -580,7 +664,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -619,7 +703,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -709,88 +793,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (isFunction(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (isArray(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -853,15 +856,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -899,7 +907,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -916,7 +924,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { diff --git a/packages/taro-mini-runner/src/__tests__/__snapshots__/config.spec.ts.snap b/packages/taro-mini-runner/src/__tests__/__snapshots__/config.spec.ts.snap index 44aaf87344c9..598cb3ac88c2 100644 --- a/packages/taro-mini-runner/src/__tests__/__snapshots__/config.spec.ts.snap +++ b/packages/taro-mini-runner/src/__tests__/__snapshots__/config.spec.ts.snap @@ -365,33 +365,6 @@ require(\\"./taro\\"); mergeReconciler(hostConfig); mergeInternalComponents(runtime_components); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { @@ -432,6 +405,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -442,6 +430,22 @@ require(\\"./taro\\"); var createClass = __webpack_require__(2); var inherits = __webpack_require__(4); var createSuper = __webpack_require__(3); + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + var reactMeta = { + PageContext: EMPTY_OBJ, + R: EMPTY_OBJ + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -466,8 +470,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = EMPTY_OBJ; - var R$1 = EMPTY_OBJ; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (isFunction(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (isArray(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -507,8 +591,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === EMPTY_OBJ) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -530,7 +614,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -556,18 +640,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -580,7 +664,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -619,7 +703,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -709,88 +793,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (isFunction(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (isArray(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -853,15 +856,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -899,7 +907,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -916,7 +924,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { @@ -2681,33 +2689,6 @@ require(\\"./taro\\"); mergeReconciler(hostConfig); mergeInternalComponents(runtime_components); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { @@ -2748,6 +2729,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -2758,12 +2754,28 @@ require(\\"./taro\\"); var createClass = __webpack_require__(2); var inherits = __webpack_require__(4); var createSuper = __webpack_require__(3); - var HOOKS_APP_ID = \\"taro-app\\"; - function isClassComponent(R, component) { - var _a; - var prototype = component.prototype; - if ((_a = component.displayName) === null || _a === void 0 ? void 0 : _a.includes(\\"Connect\\")) return false; - return isFunction(component.render) || !!(prototype === null || prototype === void 0 ? void 0 : prototype.isReactComponent) || prototype instanceof R.Component; + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + var reactMeta = { + PageContext: EMPTY_OBJ, + R: EMPTY_OBJ + }; + var HOOKS_APP_ID = \\"taro-app\\"; + function isClassComponent(R, component) { + var _a; + var prototype = component.prototype; + if ((_a = component.displayName) === null || _a === void 0 ? void 0 : _a.includes(\\"Connect\\")) return false; + return isFunction(component.render) || !!(prototype === null || prototype === void 0 ? void 0 : prototype.isReactComponent) || prototype instanceof R.Component; } function ensureIsArray(item) { if (isArray(item)) { @@ -2782,8 +2794,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = EMPTY_OBJ; - var R$1 = EMPTY_OBJ; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (isFunction(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (isArray(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -2823,8 +2915,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === EMPTY_OBJ) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -2846,7 +2938,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -2872,18 +2964,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -2896,7 +2988,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -2935,7 +3027,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -3025,88 +3117,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (isFunction(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (isArray(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -3169,15 +3180,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -3215,7 +3231,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -3232,7 +3248,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { @@ -4935,33 +4951,6 @@ require(\\"./taro\\"); mergeReconciler(hostConfig); mergeInternalComponents(runtime_components); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { @@ -5002,6 +4991,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -5012,6 +5016,22 @@ require(\\"./taro\\"); var createClass = __webpack_require__(2); var inherits = __webpack_require__(4); var createSuper = __webpack_require__(3); + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + var reactMeta = { + PageContext: EMPTY_OBJ, + R: EMPTY_OBJ + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -5036,8 +5056,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = EMPTY_OBJ; - var R$1 = EMPTY_OBJ; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (isFunction(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (isArray(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -5077,8 +5177,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === EMPTY_OBJ) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -5100,7 +5200,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -5126,18 +5226,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -5150,7 +5250,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -5189,7 +5289,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -5279,88 +5379,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (isFunction(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (isArray(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -5423,15 +5442,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -5469,7 +5493,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -5486,7 +5510,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { diff --git a/packages/taro-mini-runner/src/__tests__/__snapshots__/css-modules.spec.ts.snap b/packages/taro-mini-runner/src/__tests__/__snapshots__/css-modules.spec.ts.snap index f363c77ac572..e47eab328c85 100644 --- a/packages/taro-mini-runner/src/__tests__/__snapshots__/css-modules.spec.ts.snap +++ b/packages/taro-mini-runner/src/__tests__/__snapshots__/css-modules.spec.ts.snap @@ -365,33 +365,6 @@ require(\\"./taro\\"); mergeReconciler(hostConfig); mergeInternalComponents(runtime_components); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { @@ -432,6 +405,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -442,6 +430,22 @@ require(\\"./taro\\"); var createClass = __webpack_require__(2); var inherits = __webpack_require__(4); var createSuper = __webpack_require__(3); + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + var reactMeta = { + PageContext: EMPTY_OBJ, + R: EMPTY_OBJ + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -466,8 +470,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = EMPTY_OBJ; - var R$1 = EMPTY_OBJ; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (isFunction(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (isArray(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -507,8 +591,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === EMPTY_OBJ) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -530,7 +614,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -556,18 +640,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -580,7 +664,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -619,7 +703,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -709,88 +793,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (isFunction(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (isArray(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -853,15 +856,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -899,7 +907,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -916,7 +924,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { @@ -2523,33 +2531,6 @@ require(\\"./taro\\"); mergeReconciler(hostConfig); mergeInternalComponents(runtime_components); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { @@ -2590,6 +2571,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -2600,6 +2596,22 @@ require(\\"./taro\\"); var createClass = __webpack_require__(2); var inherits = __webpack_require__(4); var createSuper = __webpack_require__(3); + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + var reactMeta = { + PageContext: EMPTY_OBJ, + R: EMPTY_OBJ + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -2624,8 +2636,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = EMPTY_OBJ; - var R$1 = EMPTY_OBJ; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (isFunction(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (isArray(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -2665,8 +2757,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === EMPTY_OBJ) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -2688,7 +2780,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -2714,18 +2806,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -2738,7 +2830,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -2777,7 +2869,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -2867,88 +2959,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (isFunction(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (isArray(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -3011,15 +3022,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -3057,7 +3073,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -3074,7 +3090,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { diff --git a/packages/taro-mini-runner/src/__tests__/__snapshots__/custom-tabbar.spec.ts.snap b/packages/taro-mini-runner/src/__tests__/__snapshots__/custom-tabbar.spec.ts.snap index 348fbc10d345..3cac574e9e2f 100644 --- a/packages/taro-mini-runner/src/__tests__/__snapshots__/custom-tabbar.spec.ts.snap +++ b/packages/taro-mini-runner/src/__tests__/__snapshots__/custom-tabbar.spec.ts.snap @@ -359,33 +359,6 @@ require(\\"./taro\\"); Object(mocks_taro[\\"g\\"])(hostConfig); Object(mocks_taro[\\"f\\"])(runtime_components); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { @@ -426,6 +399,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -436,6 +424,22 @@ require(\\"./taro\\"); var createClass = __webpack_require__(4); var inherits = __webpack_require__(6); var createSuper = __webpack_require__(5); + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + var reactMeta = { + PageContext: mocks_taro[\\"a\\"], + R: mocks_taro[\\"a\\"] + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -460,8 +464,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = mocks_taro[\\"a\\"]; - var R$1 = mocks_taro[\\"a\\"]; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (Object(mocks_taro[\\"e\\"])(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (Object(mocks_taro[\\"d\\"])(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -501,8 +585,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === mocks_taro[\\"a\\"]) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === mocks_taro[\\"a\\"]) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -524,7 +608,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -550,18 +634,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -574,7 +658,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -613,7 +697,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -703,88 +787,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (Object(mocks_taro[\\"e\\"])(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (Object(mocks_taro[\\"d\\"])(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -847,15 +850,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === mocks_taro[\\"a\\"]) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -893,7 +901,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -910,7 +918,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { diff --git a/packages/taro-mini-runner/src/__tests__/__snapshots__/jd.spec.ts.snap b/packages/taro-mini-runner/src/__tests__/__snapshots__/jd.spec.ts.snap index 4def8c354346..403628b1d5ec 100644 --- a/packages/taro-mini-runner/src/__tests__/__snapshots__/jd.spec.ts.snap +++ b/packages/taro-mini-runner/src/__tests__/__snapshots__/jd.spec.ts.snap @@ -48,33 +48,6 @@ require(\\"./taro\\"); mergeReconciler(hostConfig); mergeInternalComponents(runtime_components); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { @@ -115,6 +88,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -125,6 +113,22 @@ require(\\"./taro\\"); var createClass = __webpack_require__(4); var inherits = __webpack_require__(6); var createSuper = __webpack_require__(5); + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + var reactMeta = { + PageContext: EMPTY_OBJ, + R: EMPTY_OBJ + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -149,8 +153,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = EMPTY_OBJ; - var R$1 = EMPTY_OBJ; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (isFunction(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (isArray(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -190,8 +274,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === EMPTY_OBJ) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -213,7 +297,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -239,18 +323,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -263,7 +347,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -302,7 +386,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -392,88 +476,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (isFunction(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (isArray(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -536,15 +539,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -582,7 +590,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -599,7 +607,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { diff --git a/packages/taro-mini-runner/src/__tests__/__snapshots__/parse-html.spec.ts.snap b/packages/taro-mini-runner/src/__tests__/__snapshots__/parse-html.spec.ts.snap index 01197dfa2b70..cd7b24de65a8 100644 --- a/packages/taro-mini-runner/src/__tests__/__snapshots__/parse-html.spec.ts.snap +++ b/packages/taro-mini-runner/src/__tests__/__snapshots__/parse-html.spec.ts.snap @@ -365,33 +365,6 @@ require(\\"./taro\\"); mergeReconciler(hostConfig); mergeInternalComponents(runtime_components); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { @@ -432,6 +405,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -442,6 +430,22 @@ require(\\"./taro\\"); var createClass = __webpack_require__(2); var inherits = __webpack_require__(4); var createSuper = __webpack_require__(3); + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + var reactMeta = { + PageContext: EMPTY_OBJ, + R: EMPTY_OBJ + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -466,8 +470,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = EMPTY_OBJ; - var R$1 = EMPTY_OBJ; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (isFunction(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (isArray(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -507,8 +591,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === EMPTY_OBJ) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -530,7 +614,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -556,18 +640,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -580,7 +664,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -619,7 +703,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -709,88 +793,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (isFunction(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (isArray(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -853,15 +856,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -899,7 +907,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -916,7 +924,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { diff --git a/packages/taro-mini-runner/src/__tests__/__snapshots__/prerender.spec.ts.snap b/packages/taro-mini-runner/src/__tests__/__snapshots__/prerender.spec.ts.snap index 11b600cdf56b..4fa024f5196c 100644 --- a/packages/taro-mini-runner/src/__tests__/__snapshots__/prerender.spec.ts.snap +++ b/packages/taro-mini-runner/src/__tests__/__snapshots__/prerender.spec.ts.snap @@ -365,33 +365,6 @@ require(\\"./taro\\"); mergeReconciler(hostConfig); mergeInternalComponents(runtime_components); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } var defineProperty = __webpack_require__(7); function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; @@ -420,6 +393,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -430,6 +418,22 @@ require(\\"./taro\\"); var createClass = __webpack_require__(4); var inherits = __webpack_require__(6); var createSuper = __webpack_require__(5); + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + var reactMeta = { + PageContext: EMPTY_OBJ, + R: EMPTY_OBJ + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -454,8 +458,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = EMPTY_OBJ; - var R$1 = EMPTY_OBJ; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (isFunction(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (isArray(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -495,8 +579,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === EMPTY_OBJ) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -518,7 +602,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -544,18 +628,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -568,7 +652,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -607,7 +691,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -697,88 +781,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (isFunction(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (isArray(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -841,15 +844,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -887,7 +895,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -904,7 +912,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { @@ -3873,33 +3881,6 @@ require(\\"./taro\\"); mergeReconciler(hostConfig); mergeInternalComponents(runtime_components); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } var defineProperty = __webpack_require__(7); function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; @@ -3928,6 +3909,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -3938,6 +3934,22 @@ require(\\"./taro\\"); var createClass = __webpack_require__(4); var inherits = __webpack_require__(6); var createSuper = __webpack_require__(5); + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + var reactMeta = { + PageContext: EMPTY_OBJ, + R: EMPTY_OBJ + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -3962,8 +3974,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = EMPTY_OBJ; - var R$1 = EMPTY_OBJ; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (isFunction(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (isArray(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -4003,8 +4095,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === EMPTY_OBJ) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -4026,7 +4118,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -4052,18 +4144,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -4076,7 +4168,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -4115,7 +4207,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -4158,135 +4250,54 @@ require(\\"./taro\\"); set: function set(value) { globalData[key] = value; } - }); - })); - Object.defineProperties(this, descriptors); - } - (_b = app.onLaunch) === null || _b === void 0 ? void 0 : _b.call(app, options); - } - } - })), Object(defineProperty[\\"a\\"])(_Object$create, ONSHOW, setDefaultDescriptor({ - value: function value(options) { - var _a; - setRouterParams(options); - var app = getAppInstance(); - (_a = app === null || app === void 0 ? void 0 : app.componentDidShow) === null || _a === void 0 ? void 0 : _a.call(app, options); - triggerAppHook(\\"onShow\\", options); - } - })), Object(defineProperty[\\"a\\"])(_Object$create, ONHIDE, setDefaultDescriptor({ - value: function value() { - var _a; - var app = getAppInstance(); - (_a = app === null || app === void 0 ? void 0 : app.componentDidHide) === null || _a === void 0 ? void 0 : _a.call(app); - triggerAppHook(\\"onHide\\"); - } - })), Object(defineProperty[\\"a\\"])(_Object$create, \\"onPageNotFound\\", setDefaultDescriptor({ - value: function value(res) { - var _a; - var app = getAppInstance(); - (_a = app === null || app === void 0 ? void 0 : app.onPageNotFound) === null || _a === void 0 ? void 0 : _a.call(app, res); - } - })), _Object$create)); - function triggerAppHook(lifecycle) { - for (var _len = arguments.length, option = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - option[_key - 1] = arguments[_key]; - } - var instance = Object(taro_runtime[\\"getPageInstance\\"])(HOOKS_APP_ID); - if (instance) { - var app = getAppInstance(); - var func = hooks$1.getLifecycle(instance, lifecycle); - if (Array.isArray(func)) { - func.forEach((function(cb) { - return cb.apply(app, option); - })); - } - } - } - taro_runtime[\\"Current\\"].app = appObj; - return appObj; - } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (isFunction(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (isArray(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); + }); + })); + Object.defineProperties(this, descriptors); + } + (_b = app.onLaunch) === null || _b === void 0 ? void 0 : _b.call(app, options); + } + } + })), Object(defineProperty[\\"a\\"])(_Object$create, ONSHOW, setDefaultDescriptor({ + value: function value(options) { + var _a; + setRouterParams(options); + var app = getAppInstance(); + (_a = app === null || app === void 0 ? void 0 : app.componentDidShow) === null || _a === void 0 ? void 0 : _a.call(app, options); + triggerAppHook(\\"onShow\\", options); + } + })), Object(defineProperty[\\"a\\"])(_Object$create, ONHIDE, setDefaultDescriptor({ + value: function value() { + var _a; + var app = getAppInstance(); + (_a = app === null || app === void 0 ? void 0 : app.componentDidHide) === null || _a === void 0 ? void 0 : _a.call(app); + triggerAppHook(\\"onHide\\"); + } + })), Object(defineProperty[\\"a\\"])(_Object$create, \\"onPageNotFound\\", setDefaultDescriptor({ + value: function value(res) { + var _a; + var app = getAppInstance(); + (_a = app === null || app === void 0 ? void 0 : app.onPageNotFound) === null || _a === void 0 ? void 0 : _a.call(app, res); + } + })), _Object$create)); + function triggerAppHook(lifecycle) { + for (var _len = arguments.length, option = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + option[_key - 1] = arguments[_key]; + } + var instance = Object(taro_runtime[\\"getPageInstance\\"])(HOOKS_APP_ID); + if (instance) { + var app = getAppInstance(); + var func = hooks$1.getLifecycle(instance, lifecycle); + if (Array.isArray(func)) { + func.forEach((function(cb) { + return cb.apply(app, option); + })); + } + } + } + taro_runtime[\\"Current\\"].app = appObj; + return appObj; + } var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -4349,15 +4360,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -4395,7 +4411,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -4412,7 +4428,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { @@ -7381,33 +7397,6 @@ require(\\"./taro\\"); mergeReconciler(hostConfig); mergeInternalComponents(runtime_components); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } var defineProperty = __webpack_require__(7); function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; @@ -7436,6 +7425,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -7446,6 +7450,22 @@ require(\\"./taro\\"); var createClass = __webpack_require__(4); var inherits = __webpack_require__(6); var createSuper = __webpack_require__(5); + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + var reactMeta = { + PageContext: EMPTY_OBJ, + R: EMPTY_OBJ + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -7470,8 +7490,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = EMPTY_OBJ; - var R$1 = EMPTY_OBJ; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (isFunction(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (isArray(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -7511,8 +7611,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === EMPTY_OBJ) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -7534,7 +7634,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -7560,18 +7660,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -7584,7 +7684,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -7623,7 +7723,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -7713,88 +7813,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (isFunction(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (isArray(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -7857,15 +7876,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -7903,7 +7927,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -7920,7 +7944,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { diff --git a/packages/taro-mini-runner/src/__tests__/__snapshots__/qq.spec.ts.snap b/packages/taro-mini-runner/src/__tests__/__snapshots__/qq.spec.ts.snap index 6a219b154b29..2377673bbb11 100644 --- a/packages/taro-mini-runner/src/__tests__/__snapshots__/qq.spec.ts.snap +++ b/packages/taro-mini-runner/src/__tests__/__snapshots__/qq.spec.ts.snap @@ -469,6 +469,10 @@ require(\\"./taro\\"); var createClass = __webpack_require__(4); var inherits = __webpack_require__(6); var createSuper = __webpack_require__(5); + var reactMeta = { + PageContext: EMPTY_OBJ, + R: EMPTY_OBJ + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -493,8 +497,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = EMPTY_OBJ; - var R$1 = EMPTY_OBJ; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (isFunction(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (isArray(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -534,8 +618,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === EMPTY_OBJ) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -557,7 +641,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -583,18 +667,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -607,7 +691,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -646,7 +730,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -736,88 +820,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (isFunction(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (isArray(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -880,15 +883,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -926,7 +934,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -943,7 +951,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { @@ -2934,6 +2942,10 @@ require(\\"./taro\\"); var createClass = __webpack_require__(4); var inherits = __webpack_require__(6); var createSuper = __webpack_require__(5); + var reactMeta = { + PageContext: EMPTY_OBJ, + R: EMPTY_OBJ + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -2958,8 +2970,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = EMPTY_OBJ; - var R$1 = EMPTY_OBJ; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (isFunction(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (isArray(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -2999,8 +3091,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === EMPTY_OBJ) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -3022,7 +3114,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -3048,18 +3140,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -3072,7 +3164,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -3111,7 +3203,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -3201,88 +3293,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (isFunction(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (isArray(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -3345,15 +3356,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -3391,7 +3407,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -3408,7 +3424,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { diff --git a/packages/taro-mini-runner/src/__tests__/__snapshots__/react.spec.ts.snap b/packages/taro-mini-runner/src/__tests__/__snapshots__/react.spec.ts.snap index 33bb8f736a87..63c467217e7b 100644 --- a/packages/taro-mini-runner/src/__tests__/__snapshots__/react.spec.ts.snap +++ b/packages/taro-mini-runner/src/__tests__/__snapshots__/react.spec.ts.snap @@ -365,33 +365,6 @@ require(\\"./taro\\"); mergeReconciler(hostConfig); mergeInternalComponents(runtime_components); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { @@ -432,6 +405,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -442,6 +430,22 @@ require(\\"./taro\\"); var createClass = __webpack_require__(4); var inherits = __webpack_require__(6); var createSuper = __webpack_require__(5); + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + var reactMeta = { + PageContext: EMPTY_OBJ, + R: EMPTY_OBJ + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -466,8 +470,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = EMPTY_OBJ; - var R$1 = EMPTY_OBJ; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (isFunction(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (isArray(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -507,8 +591,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === EMPTY_OBJ) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -530,7 +614,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -556,18 +640,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -580,7 +664,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -619,7 +703,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -709,88 +793,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (isFunction(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (isArray(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -853,15 +856,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -899,7 +907,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -916,7 +924,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { diff --git a/packages/taro-mini-runner/src/__tests__/__snapshots__/sass.spec.ts.snap b/packages/taro-mini-runner/src/__tests__/__snapshots__/sass.spec.ts.snap index 540e0544d7bd..5c7ff400c363 100644 --- a/packages/taro-mini-runner/src/__tests__/__snapshots__/sass.spec.ts.snap +++ b/packages/taro-mini-runner/src/__tests__/__snapshots__/sass.spec.ts.snap @@ -365,33 +365,6 @@ require(\\"./taro\\"); mergeReconciler(hostConfig); mergeInternalComponents(runtime_components); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { @@ -432,6 +405,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -442,6 +430,22 @@ require(\\"./taro\\"); var createClass = __webpack_require__(2); var inherits = __webpack_require__(4); var createSuper = __webpack_require__(3); + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + var reactMeta = { + PageContext: EMPTY_OBJ, + R: EMPTY_OBJ + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -466,8 +470,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = EMPTY_OBJ; - var R$1 = EMPTY_OBJ; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (isFunction(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (isArray(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -507,8 +591,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === EMPTY_OBJ) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -530,7 +614,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -556,18 +640,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -580,7 +664,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -619,7 +703,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -709,88 +793,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (isFunction(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (isArray(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -853,15 +856,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -899,7 +907,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -916,7 +924,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { @@ -2506,33 +2514,6 @@ require(\\"./taro\\"); mergeReconciler(hostConfig); mergeInternalComponents(runtime_components); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { @@ -2573,6 +2554,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -2583,12 +2579,28 @@ require(\\"./taro\\"); var createClass = __webpack_require__(2); var inherits = __webpack_require__(4); var createSuper = __webpack_require__(3); - var HOOKS_APP_ID = \\"taro-app\\"; - function isClassComponent(R, component) { - var _a; - var prototype = component.prototype; - if ((_a = component.displayName) === null || _a === void 0 ? void 0 : _a.includes(\\"Connect\\")) return false; - return isFunction(component.render) || !!(prototype === null || prototype === void 0 ? void 0 : prototype.isReactComponent) || prototype instanceof R.Component; + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + var reactMeta = { + PageContext: EMPTY_OBJ, + R: EMPTY_OBJ + }; + var HOOKS_APP_ID = \\"taro-app\\"; + function isClassComponent(R, component) { + var _a; + var prototype = component.prototype; + if ((_a = component.displayName) === null || _a === void 0 ? void 0 : _a.includes(\\"Connect\\")) return false; + return isFunction(component.render) || !!(prototype === null || prototype === void 0 ? void 0 : prototype.isReactComponent) || prototype instanceof R.Component; } function ensureIsArray(item) { if (isArray(item)) { @@ -2607,8 +2619,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = EMPTY_OBJ; - var R$1 = EMPTY_OBJ; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (isFunction(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (isArray(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -2648,8 +2740,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === EMPTY_OBJ) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -2671,7 +2763,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -2697,18 +2789,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -2721,7 +2813,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -2760,7 +2852,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -2850,88 +2942,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (isFunction(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (isArray(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -2994,15 +3005,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -3040,7 +3056,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -3057,7 +3073,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { @@ -4647,33 +4663,6 @@ require(\\"./taro\\"); mergeReconciler(hostConfig); mergeInternalComponents(runtime_components); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { @@ -4714,6 +4703,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -4724,6 +4728,22 @@ require(\\"./taro\\"); var createClass = __webpack_require__(2); var inherits = __webpack_require__(4); var createSuper = __webpack_require__(3); + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + var reactMeta = { + PageContext: EMPTY_OBJ, + R: EMPTY_OBJ + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -4748,8 +4768,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = EMPTY_OBJ; - var R$1 = EMPTY_OBJ; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (isFunction(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (isArray(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -4789,8 +4889,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === EMPTY_OBJ) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -4812,7 +4912,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -4838,18 +4938,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -4862,7 +4962,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -4901,7 +5001,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -4944,135 +5044,54 @@ require(\\"./taro\\"); set: function set(value) { globalData[key] = value; } - }); - })); - Object.defineProperties(this, descriptors); - } - (_b = app.onLaunch) === null || _b === void 0 ? void 0 : _b.call(app, options); - } - } - })), _defineProperty(_Object$create, ONSHOW, setDefaultDescriptor({ - value: function value(options) { - var _a; - setRouterParams(options); - var app = getAppInstance(); - (_a = app === null || app === void 0 ? void 0 : app.componentDidShow) === null || _a === void 0 ? void 0 : _a.call(app, options); - triggerAppHook(\\"onShow\\", options); - } - })), _defineProperty(_Object$create, ONHIDE, setDefaultDescriptor({ - value: function value() { - var _a; - var app = getAppInstance(); - (_a = app === null || app === void 0 ? void 0 : app.componentDidHide) === null || _a === void 0 ? void 0 : _a.call(app); - triggerAppHook(\\"onHide\\"); - } - })), _defineProperty(_Object$create, \\"onPageNotFound\\", setDefaultDescriptor({ - value: function value(res) { - var _a; - var app = getAppInstance(); - (_a = app === null || app === void 0 ? void 0 : app.onPageNotFound) === null || _a === void 0 ? void 0 : _a.call(app, res); - } - })), _Object$create)); - function triggerAppHook(lifecycle) { - for (var _len = arguments.length, option = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - option[_key - 1] = arguments[_key]; - } - var instance = Object(taro_runtime[\\"getPageInstance\\"])(HOOKS_APP_ID); - if (instance) { - var app = getAppInstance(); - var func = hooks$1.getLifecycle(instance, lifecycle); - if (Array.isArray(func)) { - func.forEach((function(cb) { - return cb.apply(app, option); - })); - } - } - } - taro_runtime[\\"Current\\"].app = appObj; - return appObj; - } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (isFunction(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (isArray(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); + }); + })); + Object.defineProperties(this, descriptors); + } + (_b = app.onLaunch) === null || _b === void 0 ? void 0 : _b.call(app, options); + } + } + })), _defineProperty(_Object$create, ONSHOW, setDefaultDescriptor({ + value: function value(options) { + var _a; + setRouterParams(options); + var app = getAppInstance(); + (_a = app === null || app === void 0 ? void 0 : app.componentDidShow) === null || _a === void 0 ? void 0 : _a.call(app, options); + triggerAppHook(\\"onShow\\", options); + } + })), _defineProperty(_Object$create, ONHIDE, setDefaultDescriptor({ + value: function value() { + var _a; + var app = getAppInstance(); + (_a = app === null || app === void 0 ? void 0 : app.componentDidHide) === null || _a === void 0 ? void 0 : _a.call(app); + triggerAppHook(\\"onHide\\"); + } + })), _defineProperty(_Object$create, \\"onPageNotFound\\", setDefaultDescriptor({ + value: function value(res) { + var _a; + var app = getAppInstance(); + (_a = app === null || app === void 0 ? void 0 : app.onPageNotFound) === null || _a === void 0 ? void 0 : _a.call(app, res); + } + })), _Object$create)); + function triggerAppHook(lifecycle) { + for (var _len = arguments.length, option = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + option[_key - 1] = arguments[_key]; + } + var instance = Object(taro_runtime[\\"getPageInstance\\"])(HOOKS_APP_ID); + if (instance) { + var app = getAppInstance(); + var func = hooks$1.getLifecycle(instance, lifecycle); + if (Array.isArray(func)) { + func.forEach((function(cb) { + return cb.apply(app, option); + })); + } + } + } + taro_runtime[\\"Current\\"].app = appObj; + return appObj; + } var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -5135,15 +5154,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -5181,7 +5205,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -5198,7 +5222,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { @@ -6788,33 +6812,6 @@ require(\\"./taro\\"); mergeReconciler(hostConfig); mergeInternalComponents(runtime_components); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { @@ -6855,6 +6852,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -6865,6 +6877,22 @@ require(\\"./taro\\"); var createClass = __webpack_require__(2); var inherits = __webpack_require__(4); var createSuper = __webpack_require__(3); + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + var reactMeta = { + PageContext: EMPTY_OBJ, + R: EMPTY_OBJ + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -6889,8 +6917,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = EMPTY_OBJ; - var R$1 = EMPTY_OBJ; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (isFunction(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (isArray(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -6930,8 +7038,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === EMPTY_OBJ) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -6953,7 +7061,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -6979,18 +7087,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -7003,7 +7111,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -7042,7 +7150,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -7132,88 +7240,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (isFunction(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (isArray(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -7276,15 +7303,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -7322,7 +7354,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -7339,7 +7371,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { diff --git a/packages/taro-mini-runner/src/__tests__/__snapshots__/subpackages.spec.ts.snap b/packages/taro-mini-runner/src/__tests__/__snapshots__/subpackages.spec.ts.snap index 15b14488b864..a5031ef6838d 100644 --- a/packages/taro-mini-runner/src/__tests__/__snapshots__/subpackages.spec.ts.snap +++ b/packages/taro-mini-runner/src/__tests__/__snapshots__/subpackages.spec.ts.snap @@ -18,7 +18,7 @@ require(\\"./taro\\"); 19: function(module, __webpack_exports__, __webpack_require__) { \\"use strict\\"; __webpack_require__.r(__webpack_exports__); - var mocks_taro = __webpack_require__(2); + var mocks_taro = __webpack_require__(1); var needPromiseApis = new Set([ \\"authPrivateMessage\\", \\"disableAlertBeforeUnload\\", \\"enableAlertBeforeUnload\\", \\"getBackgroundFetchData\\", \\"getGroupEnterInfo\\", \\"getShareInfo\\", \\"getWeRunData\\", \\"join1v1Chat\\", \\"openVideoEditor\\", \\"saveFileToDisk\\", \\"scanItem\\", \\"setEnable1v1Chat\\", \\"setWindowSize\\", \\"sendBizRedPacket\\", \\"startFacialRecognitionVerify\\", \\"openCustomerServiceChat\\", \\"getLocalIPAddress\\", \\"getUserProfile\\" ]); function initNativeApi(taro) { Object(mocks_taro[\\"h\\"])(taro, wx, { @@ -359,33 +359,6 @@ require(\\"./taro\\"); Object(mocks_taro[\\"g\\"])(hostConfig); Object(mocks_taro[\\"f\\"])(runtime_components); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { @@ -426,6 +399,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -436,6 +424,22 @@ require(\\"./taro\\"); var createClass = __webpack_require__(4); var inherits = __webpack_require__(6); var createSuper = __webpack_require__(5); + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + var reactMeta = { + PageContext: mocks_taro[\\"a\\"], + R: mocks_taro[\\"a\\"] + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -460,8 +464,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = mocks_taro[\\"a\\"]; - var R$1 = mocks_taro[\\"a\\"]; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (Object(mocks_taro[\\"e\\"])(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (Object(mocks_taro[\\"d\\"])(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -501,8 +585,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === mocks_taro[\\"a\\"]) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === mocks_taro[\\"a\\"]) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -524,7 +608,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -550,18 +634,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -574,7 +658,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -613,7 +697,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -703,88 +787,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (Object(mocks_taro[\\"e\\"])(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (Object(mocks_taro[\\"d\\"])(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -847,15 +850,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === mocks_taro[\\"a\\"]) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -893,7 +901,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -910,7 +918,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { @@ -999,7 +1007,7 @@ require(\\"./taro\\"); if (false) { var oldDiffedHook, oldVNodeHook, runtime_options; } - var mocks_react = __webpack_require__(1); + var mocks_react = __webpack_require__(2); var src_app = __webpack_require__(15); var app_App = function(_Component) { Object(inherits[\\"a\\"])(App, _Component); @@ -1844,10 +1852,6 @@ require(\\"./taro\\"); /** filePath: dist/common.js **/ (wx[\\"webpackJsonp\\"] = wx[\\"webpackJsonp\\"] || []).push([ [ 2 ], [ , function(module, __webpack_exports__, __webpack_require__) { - \\"use strict\\"; - __webpack_require__.r(__webpack_exports__); - __webpack_exports__[\\"default\\"] = \\"react-mock\\"; -}, function(module, __webpack_exports__, __webpack_require__) { \\"use strict\\"; __webpack_require__.d(__webpack_exports__, \\"g\\", (function() { return mergeReconciler; @@ -1874,6 +1878,10 @@ require(\\"./taro\\"); function isArray() {} function processApis() {} var EMPTY_OBJ = {}; +}, function(module, __webpack_exports__, __webpack_require__) { + \\"use strict\\"; + __webpack_require__.r(__webpack_exports__); + __webpack_exports__[\\"default\\"] = \\"react-mock\\"; } ] ]); /** filePath: dist/comp.js **/ @@ -1925,7 +1933,7 @@ require(\\"../../sub-utils\\"); var createClass = __webpack_require__(4); var inherits = __webpack_require__(6); var createSuper = __webpack_require__(5); - var react = __webpack_require__(1); + var react = __webpack_require__(2); var taro_components = __webpack_require__(7); var common = __webpack_require__(8); var detail = __webpack_require__(18); @@ -1986,7 +1994,7 @@ require(\\"../../sub-utils\\"); var createClass = __webpack_require__(4); var inherits = __webpack_require__(6); var createSuper = __webpack_require__(5); - var react = __webpack_require__(1); + var react = __webpack_require__(2); var taro_components = __webpack_require__(7); var common = __webpack_require__(8); var my_My = function(_Component) { @@ -2039,9 +2047,9 @@ require(\\"../../sub-utils\\"); var createClass = __webpack_require__(4); var inherits = __webpack_require__(6); var createSuper = __webpack_require__(5); - var react = __webpack_require__(1); + var react = __webpack_require__(2); var taro_components = __webpack_require__(7); - var taro = __webpack_require__(2); + var taro = __webpack_require__(1); var index_Index = function(_Component) { Object(inherits[\\"a\\"])(Index, _Component); var _super = Object(createSuper[\\"a\\"])(Index); diff --git a/packages/taro-mini-runner/src/__tests__/__snapshots__/swan.spec.ts.snap b/packages/taro-mini-runner/src/__tests__/__snapshots__/swan.spec.ts.snap index 32a623f5668e..1de543252949 100644 --- a/packages/taro-mini-runner/src/__tests__/__snapshots__/swan.spec.ts.snap +++ b/packages/taro-mini-runner/src/__tests__/__snapshots__/swan.spec.ts.snap @@ -244,33 +244,6 @@ require(\\"./taro\\"); mergeReconciler(hostConfig); mergeInternalComponents(runtime_components); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { @@ -311,6 +284,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -321,6 +309,22 @@ require(\\"./taro\\"); var createClass = __webpack_require__(4); var inherits = __webpack_require__(6); var createSuper = __webpack_require__(5); + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + var reactMeta = { + PageContext: EMPTY_OBJ, + R: EMPTY_OBJ + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -345,8 +349,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = EMPTY_OBJ; - var R$1 = EMPTY_OBJ; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (isFunction(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (isArray(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -386,8 +470,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === EMPTY_OBJ) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -409,7 +493,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -435,18 +519,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -459,7 +543,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -498,7 +582,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -588,88 +672,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (isFunction(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (isArray(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -732,15 +735,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -778,7 +786,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -795,7 +803,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { diff --git a/packages/taro-mini-runner/src/__tests__/__snapshots__/tabbar.spec.ts.snap b/packages/taro-mini-runner/src/__tests__/__snapshots__/tabbar.spec.ts.snap index a5a738c302e7..8c41b671647b 100644 --- a/packages/taro-mini-runner/src/__tests__/__snapshots__/tabbar.spec.ts.snap +++ b/packages/taro-mini-runner/src/__tests__/__snapshots__/tabbar.spec.ts.snap @@ -564,33 +564,6 @@ require(\\"./taro\\"); __webpack_require__.r(__webpack_exports__); var runtime = __webpack_require__(13); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { @@ -631,6 +604,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -641,7 +629,23 @@ require(\\"./taro\\"); var createClass = __webpack_require__(4); var inherits = __webpack_require__(6); var createSuper = __webpack_require__(5); + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } var taro = __webpack_require__(1); + var reactMeta = { + PageContext: taro[\\"a\\"], + R: taro[\\"a\\"] + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -666,8 +670,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = taro[\\"a\\"]; - var R$1 = taro[\\"a\\"]; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (Object(taro[\\"d\\"])(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (Object(taro[\\"c\\"])(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -707,8 +791,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === taro[\\"a\\"]) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === taro[\\"a\\"]) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -730,7 +814,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -756,18 +840,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -780,7 +864,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -819,7 +903,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -909,88 +993,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (Object(taro[\\"d\\"])(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (Object(taro[\\"c\\"])(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -1053,15 +1056,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === taro[\\"a\\"]) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -1099,7 +1107,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -1116,7 +1124,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { @@ -2059,33 +2067,6 @@ require(\\"./taro\\"); mergeReconciler(hostConfig); mergeInternalComponents(runtime_components); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { @@ -2126,6 +2107,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -2136,6 +2132,22 @@ require(\\"./taro\\"); var createClass = __webpack_require__(3); var inherits = __webpack_require__(5); var createSuper = __webpack_require__(4); + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + var reactMeta = { + PageContext: EMPTY_OBJ, + R: EMPTY_OBJ + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -2160,8 +2172,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = EMPTY_OBJ; - var R$1 = EMPTY_OBJ; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (isFunction(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (isArray(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -2201,8 +2293,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === EMPTY_OBJ) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -2224,7 +2316,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -2250,18 +2342,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -2274,7 +2366,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -2313,7 +2405,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -2403,88 +2495,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (isFunction(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (isArray(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -2547,15 +2558,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -2593,7 +2609,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -2610,7 +2626,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { diff --git a/packages/taro-mini-runner/src/__tests__/__snapshots__/ts.spec.ts.snap b/packages/taro-mini-runner/src/__tests__/__snapshots__/ts.spec.ts.snap index 4287f0ca9e1b..ec1dc5257ca8 100644 --- a/packages/taro-mini-runner/src/__tests__/__snapshots__/ts.spec.ts.snap +++ b/packages/taro-mini-runner/src/__tests__/__snapshots__/ts.spec.ts.snap @@ -365,33 +365,6 @@ require(\\"./taro\\"); mergeReconciler(hostConfig); mergeInternalComponents(runtime_components); var taro_runtime = __webpack_require__(0); - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _iterableToArray(iter) { - if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === \\"Object\\" && o.constructor) n = o.constructor.name; - if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); - if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _nonIterableSpread() { - throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { @@ -432,6 +405,21 @@ require(\\"./taro\\"); } return _arr; } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === \\"Object\\" && o.constructor) n = o.constructor.name; + if (n === \\"Map\\" || n === \\"Set\\") return Array.from(o); + if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } function _nonIterableRest() { throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); } @@ -442,6 +430,22 @@ require(\\"./taro\\"); var createClass = __webpack_require__(2); var inherits = __webpack_require__(4); var createSuper = __webpack_require__(3); + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _iterableToArray(iter) { + if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter); + } + function _nonIterableSpread() { + throw new TypeError(\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\"); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + var reactMeta = { + PageContext: EMPTY_OBJ, + R: EMPTY_OBJ + }; var HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -466,8 +470,88 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - var PageContext = EMPTY_OBJ; - var R$1 = EMPTY_OBJ; + var runtime_taroHooks = function taroHooks(lifecycle) { + return function(fn) { + var React = reactMeta.R, PageContext = reactMeta.PageContext; + var id = React.useContext(PageContext) || HOOKS_APP_ID; + var fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect((function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + var callback = function callback() { + return fnRef.current.apply(fnRef, arguments); + }; + if (isFunction(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return function() { + var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + var list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (isArray(list)) { + inst[lifecycle] = list.filter((function(item) { + return item !== callback; + })); + } + }; + }), []); + }; + }; + var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); + var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); + var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); + var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); + var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); + var useResize = runtime_taroHooks(\\"onResize\\"); + var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); + var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); + var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); + var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); + var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); + var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); + var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); + var useReady = runtime_taroHooks(\\"onReady\\"); + var runtime_useRouter = function useRouter() { + var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo((function() { + return taro_runtime[\\"Current\\"].router; + }), []); + }; + var useScope = function useScope() { + return undefined; + }; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: runtime_useRouter, + useScope: useScope + }); var h$1; var ReactDOM$1; var pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -507,8 +591,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === EMPTY_OBJ) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); } return function(_R$Component) { Object(inherits[\\"a\\"])(PageWrapper, _R$Component); @@ -530,7 +614,7 @@ require(\\"./taro\\"); }, { key: \\"render\\", value: function render() { - var children = this.state.hasError ? [] : h$1(PageContext.Provider, { + var children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -556,18 +640,18 @@ require(\\"./taro\\"); var _Object$create; var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; var appInstanceRef = react.createRef(); - var isReactComponent = isClassComponent(R$1, App); + var isReactComponent = isClassComponent(react, App); var appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - var AppWrapper = function(_R$1$Component) { - Object(inherits[\\"a\\"])(AppWrapper, _R$1$Component); + var AppWrapper = function(_react$Component) { + Object(inherits[\\"a\\"])(AppWrapper, _react$Component); var _super2 = Object(createSuper[\\"a\\"])(AppWrapper); function AppWrapper() { var _this2; @@ -580,7 +664,7 @@ require(\\"./taro\\"); Object(createClass[\\"a\\"])(AppWrapper, [ { key: \\"mount\\", value: function mount(pageComponent, id, cb) { - var pageWrapper = connectReactPage(R$1, id)(pageComponent); + var pageWrapper = connectReactPage(react, id)(pageComponent); var key = id + pageKeyId(); var page = function page() { return h$1(pageWrapper, { @@ -619,7 +703,7 @@ require(\\"./taro\\"); } } ]); return AppWrapper; - }(R$1.Component); + }(react.Component); if (true) { appWrapper = (_a = ReactDOM$1.render) === null || _a === void 0 ? void 0 : _a.call(ReactDOM$1, h$1(AppWrapper), taro_runtime[\\"document\\"].getElementById(\\"app\\")); } @@ -709,88 +793,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - var runtime_taroHooks = function taroHooks(lifecycle) { - return function(fn) { - var id = R$1.useContext(PageContext) || HOOKS_APP_ID; - var fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect((function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - var callback = function callback() { - return fnRef.current.apply(fnRef, arguments); - }; - if (isFunction(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [].concat(_toConsumableArray(inst[lifecycle] || []), [ callback ]); - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return function() { - var inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - var list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (isArray(list)) { - inst[lifecycle] = list.filter((function(item) { - return item !== callback; - })); - } - }; - }), []); - }; - }; - var useDidShow = runtime_taroHooks(\\"componentDidShow\\"); - var useDidHide = runtime_taroHooks(\\"componentDidHide\\"); - var usePullDownRefresh = runtime_taroHooks(\\"onPullDownRefresh\\"); - var useReachBottom = runtime_taroHooks(\\"onReachBottom\\"); - var usePageScroll = runtime_taroHooks(\\"onPageScroll\\"); - var useResize = runtime_taroHooks(\\"onResize\\"); - var useShareAppMessage = runtime_taroHooks(\\"onShareAppMessage\\"); - var useTabItemTap = runtime_taroHooks(\\"onTabItemTap\\"); - var useTitleClick = runtime_taroHooks(\\"onTitleClick\\"); - var useOptionMenuClick = runtime_taroHooks(\\"onOptionMenuClick\\"); - var usePullIntercept = runtime_taroHooks(\\"onPullIntercept\\"); - var useShareTimeline = runtime_taroHooks(\\"onShareTimeline\\"); - var useAddToFavorites = runtime_taroHooks(\\"onAddToFavorites\\"); - var useReady = runtime_taroHooks(\\"onReady\\"); - var runtime_useRouter = function useRouter() { - var dynamic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo((function() { - return taro_runtime[\\"Current\\"].router; - }), []); - }; - var useScope = function useScope() { - return undefined; - }; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: runtime_useRouter, - useScope: useScope - }); var getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - var runtime_R; var h; var runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -853,15 +856,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext(\\"\\"); + } var item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent: function renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -899,7 +907,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -916,7 +924,7 @@ require(\\"./taro\\"); }, created: function created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached: function attached() { diff --git a/packages/taro-mini-runner/src/__tests__/__snapshots__/wx-hybrid.spec.ts.snap b/packages/taro-mini-runner/src/__tests__/__snapshots__/wx-hybrid.spec.ts.snap index d031c4a20a1f..0ceaf664d2d7 100644 --- a/packages/taro-mini-runner/src/__tests__/__snapshots__/wx-hybrid.spec.ts.snap +++ b/packages/taro-mini-runner/src/__tests__/__snapshots__/wx-hybrid.spec.ts.snap @@ -359,6 +359,10 @@ require(\\"./taro\\"); Object(mocks_taro[\\"g\\"])(hostConfig); Object(mocks_taro[\\"f\\"])(components); var taro_runtime = __webpack_require__(0); + const reactMeta = { + PageContext: mocks_taro[\\"a\\"], + R: mocks_taro[\\"a\\"] + }; const HOOKS_APP_ID = \\"taro-app\\"; function isClassComponent(R, component) { var _a; @@ -383,8 +387,77 @@ require(\\"./taro\\"); params: options === null || options === void 0 ? void 0 : options.query }, options); } - let PageContext = mocks_taro[\\"a\\"]; - let R$1 = mocks_taro[\\"a\\"]; + const taroHooks = lifecycle => fn => { + const {R: React, PageContext: PageContext} = reactMeta; + const id = React.useContext(PageContext) || HOOKS_APP_ID; + const fnRef = React.useRef(fn); + if (fnRef.current !== fn) fnRef.current = fn; + React.useLayoutEffect(() => { + let inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + let first = false; + if (inst == null) { + first = true; + inst = Object.create(null); + } + inst = inst; + const callback = (...args) => fnRef.current(...args); + if (Object(mocks_taro[\\"e\\"])(inst[lifecycle])) { + inst[lifecycle] = [ inst[lifecycle], callback ]; + } else { + inst[lifecycle] = [ ...inst[lifecycle] || [], callback ]; + } + if (first) { + Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); + } + return () => { + const inst = Object(taro_runtime[\\"getPageInstance\\"])(id); + const list = inst[lifecycle]; + if (list === callback) { + inst[lifecycle] = undefined; + } else if (Object(mocks_taro[\\"d\\"])(list)) { + inst[lifecycle] = list.filter(item => item !== callback); + } + }; + }, []); + }; + const useDidShow = taroHooks(\\"componentDidShow\\"); + const useDidHide = taroHooks(\\"componentDidHide\\"); + const usePullDownRefresh = taroHooks(\\"onPullDownRefresh\\"); + const useReachBottom = taroHooks(\\"onReachBottom\\"); + const usePageScroll = taroHooks(\\"onPageScroll\\"); + const useResize = taroHooks(\\"onResize\\"); + const useShareAppMessage = taroHooks(\\"onShareAppMessage\\"); + const useTabItemTap = taroHooks(\\"onTabItemTap\\"); + const useTitleClick = taroHooks(\\"onTitleClick\\"); + const useOptionMenuClick = taroHooks(\\"onOptionMenuClick\\"); + const usePullIntercept = taroHooks(\\"onPullIntercept\\"); + const useShareTimeline = taroHooks(\\"onShareTimeline\\"); + const useAddToFavorites = taroHooks(\\"onAddToFavorites\\"); + const useReady = taroHooks(\\"onReady\\"); + const useRouter = (dynamic = false) => { + const React = reactMeta.R; + return dynamic ? taro_runtime[\\"Current\\"].router : React.useMemo(() => taro_runtime[\\"Current\\"].router, []); + }; + const useScope = () => undefined; + var taroHooks$1 = Object.freeze({ + __proto__: null, + useDidShow: useDidShow, + useDidHide: useDidHide, + usePullDownRefresh: usePullDownRefresh, + useReachBottom: useReachBottom, + usePageScroll: usePageScroll, + useResize: useResize, + useShareAppMessage: useShareAppMessage, + useTabItemTap: useTabItemTap, + useTitleClick: useTitleClick, + useOptionMenuClick: useOptionMenuClick, + usePullIntercept: usePullIntercept, + useShareTimeline: useShareTimeline, + useAddToFavorites: useAddToFavorites, + useReady: useReady, + useRouter: useRouter, + useScope: useScope + }); let h$1; let ReactDOM$1; const pageKeyId = Object(taro_runtime[\\"incrementId\\"])(); @@ -422,8 +495,8 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; - if (PageContext === mocks_taro[\\"a\\"]) { - PageContext = R.createContext(\\"\\"); + if (reactMeta.PageContext === mocks_taro[\\"a\\"]) { + reactMeta.PageContext = R.createContext(\\"\\"); } return class PageWrapper extends R.Component { constructor() { @@ -442,7 +515,7 @@ require(\\"./taro\\"); if (false) {} } render() { - const children = this.state.hasError ? [] : h$1(PageContext.Provider, { + const children = this.state.hasError ? [] : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs))); if (false) {} else { @@ -457,24 +530,24 @@ require(\\"./taro\\"); function createReactApp(App, react, dom, config) { var _a; if (false) {} - R$1 = react; + reactMeta.R = react; h$1 = react.createElement; ReactDOM$1 = dom; const appInstanceRef = react.createRef(); - const isReactComponent = isClassComponent(R$1, App); + const isReactComponent = isClassComponent(react, App); let appWrapper; setReconciler(ReactDOM$1); function getAppInstance() { return appInstanceRef.current; } - class AppWrapper extends R$1.Component { + class AppWrapper extends react.Component { constructor() { super(...arguments); this.pages = []; this.elements = []; } mount(pageComponent, id, cb) { - const pageWrapper = connectReactPage(R$1, id)(pageComponent); + const pageWrapper = connectReactPage(react, id)(pageComponent); const key = id + pageKeyId(); const page = () => h$1(pageWrapper, { key: key, @@ -591,75 +664,7 @@ require(\\"./taro\\"); taro_runtime[\\"Current\\"].app = appObj; return appObj; } - const taroHooks = lifecycle => fn => { - const id = R$1.useContext(PageContext) || HOOKS_APP_ID; - const fnRef = R$1.useRef(fn); - if (fnRef.current !== fn) fnRef.current = fn; - R$1.useLayoutEffect(() => { - let inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - let first = false; - if (inst == null) { - first = true; - inst = Object.create(null); - } - inst = inst; - const callback = (...args) => fnRef.current(...args); - if (Object(mocks_taro[\\"e\\"])(inst[lifecycle])) { - inst[lifecycle] = [ inst[lifecycle], callback ]; - } else { - inst[lifecycle] = [ ...inst[lifecycle] || [], callback ]; - } - if (first) { - Object(taro_runtime[\\"injectPageInstance\\"])(inst, id); - } - return () => { - const inst = Object(taro_runtime[\\"getPageInstance\\"])(id); - const list = inst[lifecycle]; - if (list === callback) { - inst[lifecycle] = undefined; - } else if (Object(mocks_taro[\\"d\\"])(list)) { - inst[lifecycle] = list.filter(item => item !== callback); - } - }; - }, []); - }; - const useDidShow = taroHooks(\\"componentDidShow\\"); - const useDidHide = taroHooks(\\"componentDidHide\\"); - const usePullDownRefresh = taroHooks(\\"onPullDownRefresh\\"); - const useReachBottom = taroHooks(\\"onReachBottom\\"); - const usePageScroll = taroHooks(\\"onPageScroll\\"); - const useResize = taroHooks(\\"onResize\\"); - const useShareAppMessage = taroHooks(\\"onShareAppMessage\\"); - const useTabItemTap = taroHooks(\\"onTabItemTap\\"); - const useTitleClick = taroHooks(\\"onTitleClick\\"); - const useOptionMenuClick = taroHooks(\\"onOptionMenuClick\\"); - const usePullIntercept = taroHooks(\\"onPullIntercept\\"); - const useShareTimeline = taroHooks(\\"onShareTimeline\\"); - const useAddToFavorites = taroHooks(\\"onAddToFavorites\\"); - const useReady = taroHooks(\\"onReady\\"); - const useRouter = (dynamic = false) => dynamic ? taro_runtime[\\"Current\\"].router : R$1.useMemo(() => taro_runtime[\\"Current\\"].router, []); - const useScope = () => undefined; - var taroHooks$1 = Object.freeze({ - __proto__: null, - useDidShow: useDidShow, - useDidHide: useDidHide, - usePullDownRefresh: usePullDownRefresh, - useReachBottom: useReachBottom, - usePageScroll: usePageScroll, - useResize: useResize, - useShareAppMessage: useShareAppMessage, - useTabItemTap: useTabItemTap, - useTitleClick: useTitleClick, - useOptionMenuClick: useOptionMenuClick, - usePullIntercept: usePullIntercept, - useShareTimeline: useShareTimeline, - useAddToFavorites: useAddToFavorites, - useReady: useReady, - useRouter: useRouter, - useScope: useScope - }); const getNativeCompId = Object(taro_runtime[\\"incrementId\\"])(); - let runtime_R; let h; let runtime_ReactDOM; function initNativeComponentEntry(R, ReactDOM) { @@ -700,15 +705,20 @@ require(\\"./taro\\"); forwardedRef: inject, reactReduxForwardedRef: inject }; + if (reactMeta.PageContext === mocks_taro[\\"a\\"]) { + reactMeta.PageContext = R.createContext(\\"\\"); + } const item = { compId: compId, element: h(NativeComponentWrapper, { key: compId, getCtx: getCtx, renderComponent(ctx) { - return h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { + return h(reactMeta.PageContext.Provider, { + value: compId + }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx - })); + }))); } }) }; @@ -735,7 +745,7 @@ require(\\"./taro\\"); } function createNativeComponentConfig(Component, react, reactdom, componentConfig) { var _a, _b; - runtime_R = react; + reactMeta.R = react; h = react.createElement; runtime_ReactDOM = reactdom; setReconciler(runtime_ReactDOM); @@ -752,7 +762,7 @@ require(\\"./taro\\"); }, created() { if (!taro_runtime[\\"Current\\"].app) { - initNativeComponentEntry(runtime_R, runtime_ReactDOM); + initNativeComponentEntry(react, runtime_ReactDOM); } }, attached() { diff --git a/packages/taro-plugin-react/src/runtime/connect-native.ts b/packages/taro-plugin-react/src/runtime/connect-native.ts index efc1ce904716..dd490b371565 100644 --- a/packages/taro-plugin-react/src/runtime/connect-native.ts +++ b/packages/taro-plugin-react/src/runtime/connect-native.ts @@ -7,8 +7,10 @@ import { incrementId, eventHandler } from '@tarojs/runtime' +import { EMPTY_OBJ } from '@tarojs/shared' import { isClassComponent } from './utils' import { setReconciler } from './connect' +import { reactMeta } from './react-meta' import type * as React from 'react' import type { PageInstance } from '@tarojs/taro' @@ -20,7 +22,6 @@ import type { declare const getCurrentPages: () => PageInstance[] const getNativeCompId = incrementId() -let R: typeof React let h: typeof React.createElement let ReactDOM @@ -77,13 +78,27 @@ function initNativeComponentEntry (R: typeof React, ReactDOM) { forwardedRef: inject, reactReduxForwardedRef: inject } + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext('') + } const item = { compId, element: h(NativeComponentWrapper, { key: compId, getCtx, renderComponent (ctx) { - return h(Component, { ...(ctx.data ||= {}).props, ...refs, $scope: ctx }) + return h( + reactMeta.PageContext.Provider, + { value: compId }, + h( + Component, + { + ...(ctx.data ||= {}).props, + ...refs, + $scope: ctx + } + ) + ) } }) } @@ -120,7 +135,7 @@ function initNativeComponentEntry (R: typeof React, ReactDOM) { } export function createNativeComponentConfig (Component, react: typeof React, reactdom, componentConfig) { - R = react + reactMeta.R = react h = react.createElement ReactDOM = reactdom @@ -139,7 +154,7 @@ export function createNativeComponentConfig (Component, react: typeof React, rea }, created () { if (!Current.app) { - initNativeComponentEntry(R, ReactDOM) + initNativeComponentEntry(react, ReactDOM) } }, attached () { diff --git a/packages/taro-plugin-react/src/runtime/connect.ts b/packages/taro-plugin-react/src/runtime/connect.ts index 42a3b8af3fc9..d58f7a595638 100644 --- a/packages/taro-plugin-react/src/runtime/connect.ts +++ b/packages/taro-plugin-react/src/runtime/connect.ts @@ -9,6 +9,7 @@ import { incrementId } from '@tarojs/runtime' import { isClassComponent, ensureIsArray, setDefaultDescriptor, setRouterParams, HOOKS_APP_ID } from './utils' +import { reactMeta } from './react-meta' import type * as React from 'react' import type { AppConfig } from '@tarojs/taro' @@ -23,9 +24,6 @@ import type { type PageComponent = React.CElement> -// 初始值设置为 any 主要是为了过 TS 的校验 -export let PageContext: React.Context = EMPTY_OBJ -export let R: typeof React = EMPTY_OBJ let h: typeof React.createElement let ReactDOM @@ -109,8 +107,8 @@ export function connectReactPage ( reactReduxForwardedRef: inject } - if (PageContext === EMPTY_OBJ) { - PageContext = R.createContext('') + if (reactMeta.PageContext === EMPTY_OBJ) { + reactMeta.PageContext = R.createContext('') } return class PageWrapper extends R.Component { @@ -135,7 +133,7 @@ export function connectReactPage ( render () { const children = this.state.hasError ? [] - : h(PageContext.Provider, { value: id }, h(Page, { + : h(reactMeta.PageContext.Provider, { value: id }, h(Page, { ...this.props, ...refs })) @@ -176,11 +174,11 @@ export function createReactApp ( ensure(!!dom, '构建 React/Nerv 项目请把 process.env.FRAMEWORK 设置为 \'react\'/\'nerv\' ') } - R = react + reactMeta.R = react h = react.createElement ReactDOM = dom const appInstanceRef = react.createRef() - const isReactComponent = isClassComponent(R, App) + const isReactComponent = isClassComponent(react, App) let appWrapper: AppWrapper setReconciler(ReactDOM) @@ -189,13 +187,13 @@ export function createReactApp ( return appInstanceRef.current } - class AppWrapper extends R.Component { + class AppWrapper extends react.Component { // run createElement() inside the render function to make sure that owner is right private pages: Array<() => PageComponent> = [] private elements: Array = [] public mount (pageComponent: ReactPageComponent, id: string, cb: () => void) { - const pageWrapper = connectReactPage(R, id)(pageComponent) + const pageWrapper = connectReactPage(react, id)(pageComponent) const key = id + pageKeyId() const page = () => h(pageWrapper, { key, tid: id }) this.pages.push(page) diff --git a/packages/taro-plugin-react/src/runtime/hooks.ts b/packages/taro-plugin-react/src/runtime/hooks.ts index 54942901edc7..cdc3cd5452b0 100644 --- a/packages/taro-plugin-react/src/runtime/hooks.ts +++ b/packages/taro-plugin-react/src/runtime/hooks.ts @@ -4,13 +4,14 @@ import { getPageInstance, injectPageInstance } from '@tarojs/runtime' -import { PageContext, R as React } from './connect' +import { reactMeta } from './react-meta' import { HOOKS_APP_ID } from './utils' import type { Func, PageLifeCycle } from '@tarojs/runtime' const taroHooks = (lifecycle: keyof PageLifeCycle) => { return (fn: Func) => { + const { R: React, PageContext } = reactMeta const id = React.useContext(PageContext) || HOOKS_APP_ID // hold fn ref and keep up to date @@ -84,6 +85,7 @@ export const useAddToFavorites = taroHooks('onAddToFavorites') export const useReady = taroHooks('onReady') export const useRouter = (dynamic = false) => { + const React = reactMeta.R return dynamic ? Current.router : React.useMemo(() => Current.router, []) } diff --git a/packages/taro-plugin-react/src/runtime/react-meta.ts b/packages/taro-plugin-react/src/runtime/react-meta.ts new file mode 100644 index 000000000000..e85753b732eb --- /dev/null +++ b/packages/taro-plugin-react/src/runtime/react-meta.ts @@ -0,0 +1,13 @@ +import { EMPTY_OBJ } from '@tarojs/shared' + +import type * as React from 'react' + +interface ReactMeta { + PageContext: React.Context + R: typeof React +} + +export const reactMeta: ReactMeta = { + PageContext: EMPTY_OBJ, + R: EMPTY_OBJ +}