Форма, которая появляется только после первого входа - PullRequest
0 голосов
/ 06 марта 2019

Я использую React и библиотеку AWS Amplify, чтобы зарегистрироваться и выполнить Auth для моего проекта.Теперь я хочу создать форму, которая появляется только один раз (для пользователя, чтобы добавить дополнительные данные в базу данных, например, адрес), и она должна появляться, когда пользователь регистрируется и регистрируется в первый раз и после этого никогда больше.Я не смог понять, как это сделать, особенно если поставить условие, при котором оно появляется только при первом входе в систему.Любая помощь приветствуется.Спасибо!

1 Ответ

0 голосов
/ 07 марта 2019

Вам придется использовать пару путей.

Я предполагаю, что информация, которую вы хотите сохранить для пользователя, будет либо атрибутом пользователя в вашем пользовательском пуле 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()
    }
    

Если атрибут существует, пропустите показ формы.В противном случае установите атрибут и покажите форму.

Это работает лучше, чем использование локального хранилища в случае, если пользователь входит в систему с другого устройства.

...