为了账号安全,请及时绑定邮箱和手机立即绑定

React JSX:设置变量导致页面未加载

React JSX:设置变量导致页面未加载

繁花如伊 2022-12-02 16:28:41
我有一个关于基于另一个变量设置特定变量的问题。我在数据库中将用户的性别存储为 U、M、F。U代表未定义,M代表男性,F代表女性等。现在我想显示文本 Undefined 而不是 U 和 Male 而不是 M。export const AccountTile: React.FC = () => {  const [isEditing, setIsEditing] = React.useState(false);  const [setAccountUpdate, { data, error }] = useAccountUpdate();  const { data: user } = useUserDetails();    let userGender = user.gender;  if(userGender === "U"){    userGender = "Undefined";  }    React.useEffect(() => {    if (data && !error) {      setIsEditing(false);    }  }, [data, error]);  return (    <S.TileWrapper>      <Tile>        <S.Wrapper>          <S.Header>MY DATA</S.Header>          <S.Content>            <S.HeaderSmall>              Personal details              {!isEditing && (                <IconButton                  name="edit"                  size={22}                  onClick={() => setIsEditing(isEditing => !isEditing)}                />              )}            </S.HeaderSmall>            {isEditing ? (              <AccountUpdateForm                initialValues={{                    birthday: (user && user.birthday) || "",                  firstName: (user && user.firstName) || "",                  gender: (user && user.gender) || "",                  lastName: (user && user.lastName) || "",                                  }}                handleSubmit={data => {                  setAccountUpdate({ input: data });                }}但是,一旦我添加了这一部分,页面就会停止工作。let userGender = user.gender;  if(userGender === "U"){    userGender = "Undefined";  }这不会产生任何我可以看到的错误,但是页面仍然空白,添加此部分时不会加载。我什至没有开始使用 set 变量。有谁知道为什么会这样?否则,当删除这部分时,代码可以正常工作并且在性别字段中打印“U”。(反应,一般的前端对我来说是新的)提前致谢。
查看完整描述

1 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

我有一个关于基于另一个变量设置特定变量的问题。我在数据库中将用户的性别存储为 U、M、F。


U代表未定义,M代表男性,F代表女性等。


现在我想显示文本 Undefined 而不是 U 和 Male 而不是 M。


export const AccountTile: React.FC = () => {

  const [isEditing, setIsEditing] = React.useState(false);

  const [setAccountUpdate, { data, error }] = useAccountUpdate();

  const { data: user } = useUserDetails();

  

  let userGender = user.gender;

  if(userGender === "U"){

    userGender = "Undefined";

  }

  

  React.useEffect(() => {

    if (data && !error) {

      setIsEditing(false);

    }

  }, [data, error]);

  return (

    <S.TileWrapper>

      <Tile>

        <S.Wrapper>

          <S.Header>MY DATA</S.Header>

          <S.Content>

            <S.HeaderSmall>

              Personal details

              {!isEditing && (

                <IconButton

                  name="edit"

                  size={22}

                  onClick={() => setIsEditing(isEditing => !isEditing)}

                />

              )}

            </S.HeaderSmall>

            {isEditing ? (

              <AccountUpdateForm

                initialValues={{

                    birthday: (user && user.birthday) || "",

                  firstName: (user && user.firstName) || "",

                  gender: (user && user.gender) || "",

                  lastName: (user && user.lastName) || "",

                  

                }}

                handleSubmit={data => {

                  setAccountUpdate({ input: data });

                }}

                hide={() => {

                  setIsEditing(false);

                }}

              />

            ) : (

              <S.ContentOneLine>

                <Attribute

                  description="First Name"

                  attributeValue={(user && user.firstName) || "-"}

                />

                <Attribute

                  description="Last Name"

                  attributeValue={(user && user.lastName) || "-"}

                />

                <Attribute

                  description="Birthday"

                  attributeValue={(user && user.birthday) || "-"}

                />

                <Attribute

                  description="Gender"

                  attributeValue={(user && user.gender) || "-"}

                />

              </S.ContentOneLine>

            )}

          </S.Content>

        </S.Wrapper>

      </Tile>

    </S.TileWrapper>

  );

};

但是,一旦我添加了这一部分,页面就会停止工作。


let userGender = user.gender;

  if(userGender === "U"){

    userGender = "Undefined";

  }

这不会产生任何我可以看到的错误,但是页面仍然空白,添加此部分时不会加载。我什至没有开始使用 set 变量。有谁知道为什么会这样?


否则,当删除这部分时,代码可以正常工作并且在性别字段中打印“U”。


(反应,一般的前端对我来说是新的)


提前致谢。


查看完整回答
反对 回复 2022-12-02
  • 1 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号