在React Router v4中,如何使用this.props.history.push('/page')
传递参数?
.then(response => {
var r = this;
if (response.status >= 200 && response.status < 300) {
r.props.history.push('/template');
});
>
对于早期版本:
history.push('/[pathToSomeWhere]', yourData);
并获取相关组件中的数据,如下所示:
this.props.location.state // it is equal to yourData
对于较新版本,上述方法效果良好,但有一种新方法:
history.push({
pathname: '/[pathToSomeWhere]',
state: yourData,
});
并获取相关组件中的数据,如下所示:
>
this.props.location.state; // it is equal to yourData
功能部件
const location = useLocation();
location.state; // it is equal to yourData
有时需要使用Link
或NavLink
组件,而不是使用history.push
函数。
<Link
to={{
pathname: '/[pathToSomeWhere]',
state: yourData
}}
>
...
</Link>
提示:最新版本中应使用状态
键名。
将溶液(由Shubham Khatri建议)扩展至与反应挂钩(16.8及以后)一起使用:
package.json (always worth updating to latest packages)
{
...
"react": "^16.12.0",
"react-router-dom": "^5.1.2",
...
}
通过历史推送传递参数:
import { useHistory } from "react-router-dom";
const FirstPage = props => {
let history = useHistory();
const someEventHandler = event => {
history.push({
pathname: '/secondpage',
search: '?query=abc',
state: { detail: 'some_value' }
});
};
};
export default FirstPage;
使用“react router dom”中的useLocation访问传递的参数:
import { useEffect } from "react";
import { useLocation } from "react-router-dom";
const SecondPage = props => {
const location = useLocation();
useEffect(() => {
console.log(location.pathname); // result: '/secondpage'
console.log(location.search); // result: '?query=abc'
console.log(location.state.detail); // result: 'some_value'
}, [location]);
};
首先,您不需要执行var r=this
如
if语句中所述
引用了回调本身的上下文,因为您使用的是arrow函数,所以它引用了React组件上下文。
历史对象通常具有以下属性和方法:
>
长度-(数字)历史堆栈中的条目数
action-(string)当前操作(PUSH、REPLACE或POP) 位置-(对象)当前位置。可能具有以下属性:
- 路径名-(字符串)URL的路径
- 搜索-(字符串)URL查询字符串
- 哈希-(字符串)URL哈希片段
- 状态-(字符串)将此位置推送到堆栈上时提供给例如push(路径、状态)的特定于位置的状态。仅在浏览器和内存历史记录中可用
因此,在导航时,您可以将道具传递给历史对象,例如
this.props.history.push({
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
})
或者类似地,对于链接
组件或重定向
组件
<Link to={{
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
}}> My Link </Link>
然后在使用/template
路径呈现的组件中,您可以访问传递的道具,如
this.props.location.state.detail
还请记住,当使用来自props的历史或位置对象时,您需要将组件与路由器连接。
带路由器
您可以访问历史对象的属性和最近的
问题内容: 如何在不暴露URL的情况下将prop与组件一起传递? 这样吗?我正在使用。 问题答案: 您可以这样传递数据: 这是您可以访问的方式: 该API文档解释了如何通过状态和其他变量重定向/历史道具。 来源:https : //github.com/ReactTraining/react-router/blob/master/packages/react- router/docs/api/Re
问题内容: 我正在使用PhantomJS page.evaluate()进行抓取。我的问题是我传递到Webkit页面的代码是沙盒化的,因此无法访问我的主要幻象脚本的变量。这使得很难使抓取代码通用。 如何将参数推入页面? 问题答案: 我遇到了确切的问题。可以使用一些技巧,因为它也可以接受字符串。 有几种方法可以执行此操作,但是我使用了一个称为的包装器,该包装器接受其他参数以传递给必须在Webkit端
我有一条骆驼路线: 这是我的用户实体: 我通过设置标题尝试了这条路线: 但它不起作用 有什么方法可以通过标题设置jpa属性吗?camel文档在选项中引用了这一点,但我没有找到示例 选项: 此选项基于注册表,需要#符号。这个键/值映射用于构建查询参数。它应该是java的泛型。util。映射,其中键是给定JPA查询的命名参数,值是要为其选择的相应有效值。骆驼2.19:它也可以用于生产者。当它用于pro
问题内容: 如何通过$ _GET将数组类型的一个或多个变量传递给另一页? 我总是以以下形式传递变量值 那传球呢? 我是否需要编写一个for循环并附加所有值? 谢谢 问题答案: 您可以使用语法通过_GET传递数组: PHP理解此语法,因此等于。 您还可以指定键: 多维数组也可以工作: 自动执行此操作: 一种替代方法是传递json编码的数组: 您可以解析为: 并再次使用json_encode对其进行编
本文向大家介绍Python中的参数如何通过值或引用传递?,包括了Python中的参数如何通过值或引用传递?的使用技巧和注意事项,需要的朋友参考一下 Python使用的机构,这被称为“呼叫逐对象”,有时也被称为“呼叫由对象参考”或“呼叫通过共享” 如果将不变的参数(例如整数,字符串或元组)传递给函数,则传递的行为类似于C all-by-value。如果传递可变参数,则有所不同。 Python语言中的
问题内容: 我使用JavaScript来执行JNLP,最终将执行我的客户端。 我试图通过JavaScript执行将参数传递给JNLP,并在客户端中通过JNLP传递这些参数。 JavaScript正在执行以下URL,例如: 现在,我的JNLP将尝试以这种方式获取参数: 但这没有用。 我无法以这种方式在客户端代码中检索这些参数: JNLP位于APACHE2.2中 知道有什么问题吗? 问题答案: 为了能