【问题标题】:react router auto adds query string params反应路由器自动添加查询字符串参数
【发布时间】:2016-01-01 02:24:08
【问题描述】:

我是 reactjs 的新手。对于 React 开发人员来说,我的问题可能非常简单,但我想从这个论坛的人那里得到一些帮助。

我有两个不同的页面,一个是路由配置页面,另一个是链接页面,我正在尝试加载另一个组件,该组件重定向到显示购物车中项目列表的购物车页面。因此,默认情况下,主页(app.js)模块必须重定向到购物车页面。

我正在使用反应路由器 v1.0。

路由配置页面:(app.js)

React.render((<Router>
            <Route path="/" component={FluxShoppingCart}>
            <IndexRoute component={FluxShoppingCart}/>
              <Route name="cart"  component={ViewCart} />
            </Route>            
        </Router>),document.getElementById('container'));

链接页面:(Flux Cart 组件)

<Link to="cart"><button type="button" className="btn btn-default btn-sm">Cart&nbsp;&nbsp;{totalCartItems}</button></Link>

两者都在不同的页面中。现在,当我尝试单击使用一些查询参数更新 url 的购物车按钮时。默认加载其显示

http://localhost:8080/#/?_k=exw21r

并在与购物车的链接上显示

http://localhost:8080/#/cart?_k=xme60o

任何人都可以通过更正我的代码/共享一些资源(博客/视频)来帮助我,以帮助我解决这种情况。我需要加载默认组件,然后单击购物车按钮,它必须重定向到另一个组件。我在互联网上查看了许多示例,这些示例显示在同一页面上使用不同的组件,但我在不同的页面中使用。请只做那些需要的。提前致谢。

【问题讨论】:

    标签: reactjs react-router


    【解决方案1】:

    history 模块添加了一个唯一的查询字符串,以便在使用基于 window.location.hash 的历史记录时,它可以将每个历史记录项与 sessionStorage 中的某些状态相关联。

    它的文档对此进行了讨论,并向您展示了选择退出它的一半解决方案:

    另一半是将历史实例传递给您的Router

    var createHashHistory = require('history/lib/createHashHistory')
    
    // Opt out of persistent state query key for for hash history
    var history = createHashHistory({queryKey: false})
    
    <Router history={history}>...
    

    您还需要将history 添加到您自己的依赖项中。

    【讨论】:

    • Jonny Buchanan,require 不起作用,当我使用 babelify 处理导入时,它会在解析文件时抛出类似 ReactifyError 非法导入声明的错误。我如何在 package.json 中更改以下这些行以使用 babelify..please help "start": "watchify -o js/bundle.js -v -d .", "build": "browserify . -t [envify --NODE_ENV 生产] | uglifyjs -cm > js/bundle.min.js",
    猜你喜欢
    • 2020-10-15
    • 2017-06-26
    • 2022-01-16
    • 2016-07-06
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2017-05-07
    相关资源
    最近更新 更多