jd-opensource / jd-opensource/taro-ui

delayQuerySelector 方法缺少作用域

Open
#1,091 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
4.7k
Forks
740
PR merge metrics
No merged PRs in 30d

Description

**问题描述**

在当前页面调取上个页面的方法 `delayQuerySelector` 会在当前页面作用域下创建 `SelectorQuery` 导致获取不到上个页面实际的节点。

next 版本缺少 `scope`

https://github.com/NervJS/taro-ui/blob/09f5296eda41b990f7ff9ebb5e1e0b848ac94019/packages/taro-ui/src/common/utils.ts#L14-L29

v2.3.4 老版本则有 `Taro.createSelectorQuery().in($scope)`

https://github.com/NervJS/taro-ui/blob/abb90cd50519fe7fa182e38371fee46e53182128/src/common/utils.ts#L18-L36

**复现步骤**
1. 小程序创建两个页面,一个一级页面、另一个为二级页面
2. 一次进入到二级页面
3. 使用 `Taro.getCurrentPages()` 获取一级页面,也就是上个页面
4. 调用一级页面的一些方法,这些方法里有获取一级页面的节点代码块
5. 一级页面的节点将会获取不到,因为作用域指向里二级页面。

**期望行为**

希望不管在哪个页面使用 `delayQuerySelector` 方法,作用域都会指向当前页面

**报错信息**
获取不到节点

**系统信息**

```
👽 Taro v3.0.0-rc.2

Taro CLI 3.0.0-rc.2 environment info:
System:
OS: macOS 10.15.5
Shell: 5.7.1 - /bin/zsh
Binaries:
Node: 14.2.0 - /usr/local/bin/node
Yarn: 1.17.3 - /usr/local/bin/yarn
npm: 6.14.5 - /usr/local/bin/npm
npmPackages:
@tarojs/cli: 3.0.0-rc.2 => 3.0.0-rc.2
@tarojs/components: 3.0.0-rc.2 => 3.0.0-rc.2
@tarojs/mini-runner: 3.0.0-rc.2 => 3.0.0-rc.2
@tarojs/react: 3.0.0-rc.2 => 3.0.0-rc.2
@tarojs/runtime: 3.0.0-rc.2 => 3.0.0-rc.2
@tarojs/taro: 3.0.0-rc.2 => 3.0.0-rc.2
@tarojs/webpack-runner: 3.0.0-rc.2 => 3.0.0-rc.2
babel-preset-taro: 3.0.0-rc.2 => 3.0.0-rc.2
eslint-config-taro: 3.0.0-rc.2 => 3.0.0-rc.2
react: 16.13.1 => 16.13.1
taro-ui: ^3.0.0-alpha.2 => 3.0.0-alpha.2
```

**补充信息**

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.