Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应:更改url而无需重新提交;使用window.history?_Javascript_Reactjs - Fatal编程技术网

Javascript 反应:更改url而无需重新提交;使用window.history?

Javascript 反应:更改url而无需重新提交;使用window.history?,javascript,reactjs,Javascript,Reactjs,我的react应用程序中有一个“设置”页面。该页面有多个选项卡,用于呈现设置的不同部分 如果用户可以与其他用户共享URL,那么UX会更好 我想要的是(在“设置”页面内): 用户A单击一个选项卡 url随#选项卡名的追加而改变 用户A将该url发送给用户B,用户B打开该url 用户B看到的选项卡与用户A相同 但使用react router,如果url发生更改,整个页面将重新呈现: 从“react router dom”导入{withRouter} 常量MyComp=(道具)=>{ ... 常量on

我的react应用程序中有一个“设置”页面。该页面有多个选项卡,用于呈现设置的不同部分

如果用户可以与其他用户共享URL,那么UX会更好

我想要的是(在“设置”页面内):

  • 用户A单击一个选项卡
  • url随
    #选项卡名
    的追加而改变
  • 用户A将该url发送给用户B,用户B打开该url
  • 用户B看到的选项卡与用户A相同
  • 但使用react router,如果url发生更改,整个页面将重新呈现:

    从“react router dom”导入{withRouter}
    常量MyComp=(道具)=>{
    ...
    常量onTabChange=()=>{
    //在此处追加#tabname
    props.history.replace(…);//或'push`
    ...
    }
    ...
    使用路由器导出默认值(mycop)
    }
    
    经过大量搜索,我找到了使用
    窗口的解决方案。历史记录

    const onTabChange=()=>{
    window.history.pushState(null,null,#tabname”);
    ...
    }
    
    这确实起到了作用,但信息和解释很少,我很想知道使用这一技巧的后果

    这是一个有效的解决方案(对于react应用程序)?这会引起什么问题吗

    (注:我知道如何解析url)


    更多详细信息

    更具体地说,所有页面都有一个
    AuthChecker
    包装器。当react路由器的
    位置更改时,它会检查路由的允许身份验证和当前用户的身份验证

    我尝试了
    /path/:id
    ,但所有内容都更改了
    位置,所以进行了身份验证并重新浏览页面


    我放弃了react router中的一个解决方案,只想知道:在react应用程序中使用react router管理路由时,使用
    窗口更改url是否安全。历史记录

    所以它说window有一个名为history的属性,并且有一个关于history的方法,可以帮助您在不理解历史的情况下更新历史状态

    像这样:

    window.history.replaceState(null, 'New Page Title', '/new_url');
    

    这回答了你的问题吗?