如果我不向URL提供参数值,该如何呈现PageNotFound.js?

时间:2019-07-25 13:23:58

标签: javascript reactjs react-router-dom

当我单击邮件中的链接(具有包含身份验证令牌的密钥)时,它会将我重定向到“更新密码”页面。但是,如果用户只是输入密码,我就不想重定向它。网址。

[{http://localhost:3000/update-password?key=ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFh]应该重定向到更改密码页面,而[http://localhost:3000/update-password]应该重定向到PageNotFound页面。希望您能理解。

1 个答案:

答案 0 :(得分:0)

您应该遵循三个步骤:

  1. react-router获取当前的const { location: { search } } = propsFromReactRouter

    search
  2. 检查,import { parse } from 'query-string'; const searchData = parse(search); const { key } = searchData; 是否包含密钥。您可以手动使用https://www.npmjs.com/package/query-string来做到这一点。

    import {Redirect} from 'react-router-dom'
    // ...
    return (
        <Redirect to="/404" />
    )
    
  3. 如果搜索不包含关键字,请重定向到未找到的页面

    {{1}}