Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

navigator回来之后点击按钮不能刷新页面 #621

Closed
Liqiankun opened this issue Dec 10, 2017 · 15 comments
Closed

navigator回来之后点击按钮不能刷新页面 #621

Liqiankun opened this issue Dec 10, 2017 · 15 comments
Labels
bug Fixed inactive Inactive issue, will be auto closed in 7 days

Comments

@Liqiankun
Copy link
Contributor

现在一共三个页面A,B,C。从A页面navigate到B页面,B页面点击加入衣袋调用hidePopup有效。从B页面navigate到C页面,C页面点击加入衣袋调用hidePopup有效。从C页面回到B页面,在B页面上再次点击加入衣袋调用hidePopup被调用但是页面没有刷新,没有出现Popup。

hidePopup () {
        console.log('call hidePopup func')
        this.showPopup =!this.showPopup
      }

<view class='pop-up-container-mask' hidden="{{!showPopup}}" bindtap='hidePopup'></view>

refreshui

@Gcaufy
Copy link
Collaborator

Gcaufy commented Dec 11, 2017

BC页面都有这一句么?
<view class='pop-up-container-mask' hidden="{{!showPopup}}" bindtap='hidePopup'></view>

看代码似乎是没有问题的。
你把showPopup 打印在页面试试。

另外,尝外, 用 [0, 1] 代替 [true, false] 作为 showPopup 的值,判断别用 !, 用==0, ==1来判断。小程序可能对true/false 类型有些问题。。

@Liqiankun
Copy link
Contributor Author

Liqiankun commented Dec 11, 2017

@Gcaufy 那不应该是从C页面返回到B页面才有问题呀,如果是判断的问题,应该在第一次到B页面就出现问题。但是我先试试。

@Liqiankun
Copy link
Contributor Author

@Gcaufy 我已经试了 从C页面返回到B页面B页面的点击就不能刷新界面了!

<view class='pop-up-container-mask' hidden="{{showPopup == 0}}" bindtap='hidePopup'></view>

this.showPopup = this.showPopup == 0 ? 1 : 0;

@Liqiankun
Copy link
Contributor Author

Liqiankun commented Dec 11, 2017

@Gcaufy 我之前的页面B页面和C页面是同一个页面路径都是pages/product_detail。现在我如果从B页面(pages/product_detail)到C页面(pages/order_detail),这样从C页面回来B页面的操作就可以刷新页面。说明B页面和C页面不能是同一个页面。这个可不行啊。

@Tencent Tencent deleted a comment from Liqiankun Dec 11, 2017
@Tencent Tencent deleted a comment from Liqiankun Dec 11, 2017
@Tencent Tencent deleted a comment from Liqiankun Dec 11, 2017
@Gcaufy
Copy link
Collaborator

Gcaufy commented Dec 11, 2017

发布了alpha版本解决这个问题。

npm install wepy@1.6.1-alpha2 --save
wepy build --no-cache

@xream
Copy link

xream commented Jan 15, 2018

@Gcaufy 尝试了 wepy@1.6.1-alpha2,

发现 a->b->a, 修改 data, 然后后退到b后退到a 时,

this.$wxpage.data.__webviewId__确实跟 this.getCurrentPages()[0].data.__webviewId__ 一致了, 但是 二者的 data 不一致.

@lycooe
Copy link

lycooe commented Feb 7, 2018

@Gcaufy 此问题在1.7.0中并没有修复

如果 a b c 是相同页面只是内容不同
从 c 回到 b 页面显示的是b 的数据,但是this.data 里面的数据 是c的
从b 再回到a 数据this.data 还是c 的数据

@ymqq
Copy link

ymqq commented Feb 25, 2018

这个问题,我也发现,经过跟踪,不知道是微信小程序框架都设计还是wepy的处理。

个人觉得是小程序框架上的原因。

因为小程序将相同页面的路由重复使用,这样的目的应该是减少页面创建,复用的话可以有效的减少内存占用。

但是,没有考虑到打开相同页面进行多层级调整后,再返回的处理。

这就造成了,页面返回后,数据已经不再是原来的数据了。

@mylesshie
Copy link

用原生小程序尝试过没有复现这种问题

@JourneyL
Copy link

JourneyL commented Mar 5, 2018

望解决或者是在无法避免出现A->B->A的情况的解决方案

@Gala-1024
Copy link

这个问题有人解决了吗?

@Gala-1024
Copy link

在onRoute里面处理数据应该可以避免A->B->A的情况

@Gala-1024
Copy link

在onRoute里面用这样的方法处理吧
let _pages = getCurrentPages()
let _info = getCurrentPages()[_pages.length - 1];
console.log(_info);
console.log(_info.options);
let option = _info.options;

@Liqiankun
Copy link
Contributor Author

@cgygd 没有解决这个只能用

wepy.redirectTo({
  url: 'test?id=1'
})

解决!

@stale
Copy link

stale bot commented Jul 15, 2018

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. 因为这个 Issue 最近没有任何有效回复,所以被自动标记为了stale。 如果在未来7天依旧没有任何激活操作,那么该 Issue 将会被自动关闭。 感谢您的提问。

@stale stale bot added the inactive Inactive issue, will be auto closed in 7 days label Jul 15, 2018
@stale stale bot closed this as completed Jul 22, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Fixed inactive Inactive issue, will be auto closed in 7 days
Projects
None yet
Development

No branches or pull requests

8 participants