仅在第一次签名时出现的表格

时间:2019-03-06 09:48:42

标签: reactjs amazon-cognito aws-amplify

我正在使用React和AWS Amplify库来注册并执行我的项目的Auth。现在,我想创建一个仅显示一次的表单(供用户向数据库中添加其他数据,例如地址),并且该表单应该在用户首次注册并登录时出现,此后再也不会出现。我一直无法弄清楚如何执行此操作,特别是将条件设置为仅在首次登录时才出现。任何帮助将非常感激。谢谢!

1 个答案:

答案 0 :(得分:0)

您将不得不使用几个路径。

我假设您要用户存储的信息将是Cognito用户池中或单独数据库中的用户属性。我假设您将使用UserAttributes作为答案。

仅显示一次(我假设您的意思是登录时,用户可以通过其他方式访问它):

  1. 首次向用户展示该表单时,请使用一个名为seenForm(或其他属性)的属性更新其个人资料。
  2. 检查用户登录时是否具有该属性

    showForm = async() => {
      await Auth.updateUserAttributes({ // this sets the seenform attribute in the user's profile to make sure that they are not shown it again
        seenForm: true
      })
      ...
    }
    checkUserAttributes = async () => {
      await Auth.userAttributes()
      .then(async (userAttributes) => {
        // check to see if the attribute field exists
        !userAttributes['seenForm'] ? this.showForm() : null
      }
    }
    
    async componentDidMount() {
      checkUserAttributes()
    }
    

如果属性存在,请跳过显示表单。否则,请设置属性并显示表单。

如果用户使用其他设备登录,这种方法比使用本地存储更好。