首页 > 解决方案 > 因此在 jQuery 中重复“如果”查询

问题描述

我想永久重复“如果”查询以检索一条信息并相应地执行操作。

这应该仅在用户登录时用于显示内容。目前,只要页面加载,查询就会发生一次。问题是当用户在页面加载后登录时,内容没有出现,页面必须重新加载。这是我当前的代码:

import wixUsers from 'wix-users';
   
$w.onReady( () => {
if (wixUsers.currentUser.loggedIn) {
$w('#html1').show();
$w('#button17').show();
$w('#box9').hide();
$w('#button29').show();

}
else {
$w('#html1').hide();
$w('#button17').show();
$w('#box9').show();
$w('#button29').hide();

}
});

怎么可能总是检查这个?可能这个解决方案比较简单,但是我对jQuery了解不多。我感谢任何支持!

标签: jqueryvelo

解决方案


如果您希望代码在成功登录后运行,请尝试wixUsers.onLogin(这需要在函数内部onReady运行)。

import wixUsers from 'wix-users';
    
wixUsers.onLogin((user) => {
  let userId = user.id;
  let isLoggedIn = user.loggedIn;
  let userRole = user.role;
} );

您应该能够通过添加以下内容将代码片段集成到您的代码中:

import wixUsers from 'wix-users';

function toggleLoginState(isLoggedIn) {
    if (isLoggedIn) {
        $w('#html1').show();
        $w('#button17').show();
        $w('#box9').hide();
        $w('#button29').show();

    }
    else {
        $w('#html1').hide();
        $w('#button17').show();
        $w('#box9').show();
        $w('#button29').hide();

    }
}

$w.onReady(() => {
    toggleLoginState(wixUsers.currentUser.loggedIn); // Set default state once page has finished loadading.

    wixUsers.onLogin((user) => {
        toggleLoginState(user.loggedIn); // This should always be true.
    });
});

更多细节可以在文档中找到https://www.wix.com/velo/reference/wix-users/onlogin


推荐阅读