首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NextLink动态路由在动态路由中不工作

NextLink动态路由在动态路由中不工作
EN

Stack Overflow用户
提问于 2022-03-11 20:35:28
回答 1查看 1.2K关注 0票数 2

我有一个动态路由,当我从sitename.com/account导航到sitename.com/[username]时,它是sitename.com/account(例如,当我在/account页面中,我单击用户名是abdulkadirkg)时,它正在工作。但是,如果我在sitename.com/abdulkadirkg中,并单击另一个用户名,即sitename.com/otherusername,尽管链接已经更改,但它不起作用。我的密码在这里

代码语言:javascript
复制
<NextLink href={{pathname:"/[username]",query:{username:subscriber.userName}}} >
    <Typography variant="subtitle2" noWrap>
        {firstName} {lastName}
    </Typography>
</NextLink>

我也试过这个;

代码语言:javascript
复制
 <NextLink href={PATH+subscriber.userName} >

全码([username].js);

代码语言:javascript
复制
export default function UserProfile({username}) {
    const router = useRouter();
    const [user, setUser] = useState({});
    const [isSameUser,setIsSameUser] = useState(false);
    if (username === undefined) username = router.query.username;
    const authenticatedUser = useAuth();
    useEffect(() => {
        async function fetchData() {
            await axios.get("/User/GetProfileByUserName/" + username).then(response => {
                setUser(response.data.data);
            }).catch(err => enqueueSnackbar(err.message, {variant: 'error'}))
        }
        fetchData();
        setIsSameUser(username === authenticatedUser.user.userName);
    }, [])
    return (
        <Page title="User: Profile">
            <Container maxWidth={themeStretch ? false : 'lg'}>
                <HeaderBreadcrumbs
                    heading="Profile"
                />
                <Card>
                    <ProfileCover user={user}/>
                </Card>
            </Container>
        </Page>
    );
}

ProfileSubscribers.js中;

代码语言:javascript
复制
 <NextLink href={PATH+subscriber.userName} >
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-11 21:46:10

来自路由查询的username值在获取用户数据的useEffect中引用,它应该添加到useEffect钩子的依赖数组中,因此当username值更改时,将使用新的值再次调用fetchData

代码语言:javascript
复制
export default function UserProfile({ username }) {
  const router = useRouter();
  const [user, setUser] = useState({});
  const [isSameUser, setIsSameUser] = useState(false);

  if (username === undefined) username = router.query.username;

  const authenticatedUser = useAuth();

  useEffect(() => {
    async function fetchData() {
      await axios.get("/User/GetProfileByUserName/" + username)
        .then(response => {
          setUser(response.data.data);
        })
        .catch(err => enqueueSnackbar(err.message, { variant: 'error' }));
    }
    fetchData();
    setIsSameUser(username === authenticatedUser.user.userName);
  }, [username]);

  return (
    <Page title="User: Profile">
      <Container maxWidth={themeStretch ? false : 'lg'}>
        <HeaderBreadcrumbs heading="Profile" />
        <Card>
          <ProfileCover user={user} />
        </Card>
      </Container>
    </Page>
  );
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71444364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档