📑
Amplify のAuthenticationでのGenderなどのフィールドの表示方法
TL;DR
The Authenticator automatically renders most Cognito User Pools attributes, with the exception of address, gender, locale, picture, updated_at, and zoneinfo. Because these are often app-specific, they can be customized via Sign Up fields.
とあるのでgender
など追加するのには自分でフィールドをどうにかしないとならないのでどうするか?
以下のようにする
SignUp用のコンポーネントにGender用のフィールドを追加したものを用意する。
というか、ここでカスタマイズするのが色々便利そう。
import { Authenticator, SelectField } from '@aws-amplify/ui-react';
const components = {
SignUp: {
FormFields() {
return (
<>
<Authenticator.SignUp.FormFields />
<SelectField
name="gender"
label="Gender"
placeholder="Select your gender"
required={false}
key="gender"
options={['male', 'female', 'prefer_not_to_say']}
/>
</>
)
}
}
}
<Authenticator>
では以下のようにする
export function Home() {
return (
<Authenticator
signUpAttributes={['birthdate', 'gender']}
formFields={{
signUp: {
birthdate: { label: 'Birthdate (option)', required: false},
}
}}
components={components}
>
{({ signOut, user }) => (
<>
〜〜〜中略〜〜〜
<button onClick={signOut}>Sign out</button>
</>
)}
</Authenticator>
)
}
export default Home
required
をfalseにすれば、この時点で入れる必要なくサインアップできる(ところまでは確認した)。そもそもサインアップ時に取得しないのではあれば、表示をしない、ということでいいのだが、オプショナルにサインアップ時に取得したい、という場合にはこうしておくのが良いかも。
withAuthenticator
で、このような形に渡すやり方については不明なのでわかる人いたら教えてくださいませ。
Discussion