Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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 使用react router v4添加或更新查询参数,无需重新呈现主组件_Javascript_Reactjs_React Router - Fatal编程技术网

Javascript 使用react router v4添加或更新查询参数,无需重新呈现主组件

Javascript 使用react router v4添加或更新查询参数,无需重新呈现主组件,javascript,reactjs,react-router,Javascript,Reactjs,React Router,假设我们有一个React应用程序,其入口点如下所示: import React from 'react'; import ReactDOM from 'react-dom'; import { BrowserRouter } from 'react-router-dom'; import Application from './Application'; ReactDOM.render(( <BrowserRouter> <Application

假设我们有一个React应用程序,其入口点如下所示:

import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter } from 'react-router-dom';

import Application from './Application';


ReactDOM.render((
    <BrowserRouter>
        <Application />
    </BrowserRouter>
), document.getElementById('root'));
从“React”导入React;
从“react dom”导入react dom;
从“react router dom”导入{BrowserRouter};
从“./Application”导入应用程序;
ReactDOM.render((
,但使用该方法会导致重新呈现
应用程序


有没有可能在不重新呈现
应用程序
的情况下添加或更新查询参数?我发现我可以在不重新呈现
应用程序
的情况下更改查询参数,但这感觉像是一种黑客行为。

我目前正在阅读一本关于react的书,并且也有同样的问题

我发现您需要向父组件添加shouldComponentUpdate方法,并验证location.search值是否不同

this.props.location.search!==nextrops.location.search

从该验证返回true将重新呈现组件

附言。 这本书使用的是React Router v3,所以我很难更新整个应用程序和嵌套路由

p.p.S。
我现在使用的是React Router之外的历史包,我觉得这不是一个黑客行为,而是一个可行的解决方案。包装的历史是用来重新渲染的,我不认为它们提供了一个无声的选项,在我看来这只是一个未包装的历史。我认为这是一个黑客行为,因为这样做会导致React Router的
历史
位置
不更新的对象。这些对象可能很有用。实际上,我现在遇到了一种情况,从中读取它们会很有用。在本例中,
应用程序
没有任何道具。但您更广泛的观点是正确的:我可以实现
shouldComponentUpdate
或使
应用程序
成为
 PureComponent
,这将阻止它在任何道具更改之前重新渲染。这实际上可能是一个比使用历史API更干净的解决方法,我很感激这一建议。不过,我想知道react router是否有办法在不重新渲染所有内容的情况下更改查询参数,就像历史API有办法更改一样查询参数而不重新加载。