如何使用 history hook 传递数据以响应功能组件
How to pass data with history hook to react functional components
我正在尝试在执行提取查询后实现重定向。
我希望能够使用 React History 将数据传递到下一个组件(页面)。
它会是这样的:
const history = useHistory({});
/* ... */
history.push({
pathname: '/page',
state: { data: data }
})
然后在接收器中检索状态,假设接收器是基于 class 的组件:
this.state.data
有没有可能用功能组件实现这样的功能?这个问题最干净的解决方案是什么?
感谢您的帮助
您传递给 history.push
的数据并非像那样本质上绑定到 class 组件,因此对于 class 或功能组件,您必须访问来自某处的位置状态,然后将其分配给组件的状态
如果功能组件是从路由渲染的,它应该接收 history
作为道具,然后你可以通过简单地做类似 history.location.state
的事情来获取该数据。然后你可以用它做任何你想做的事并通过 useState
将它分配给状态
我想您也可以使用那个钩子 useHistory
来获取位置状态。
类似于
function MyComponent() {
const history = useHistory()
return <div>
{JSON.stringify(history.location.state)}
</div>
}
// Rendered via <Route component={MyOtherComponent} />
function MyOtherComponent({ history }) {
return <div>
{JSON.stringify(history.location.state)}
</div>
}
你不能直接通过历史传递状态,但你可以轻松地传递你想通过历史传递的值,比如...
this.props.history.push('export', { value: data.dealer_userid, label: data.user_displayname, nicename: data.user_nicename, invid: data.dealer_invid, date: date });
我正在尝试在执行提取查询后实现重定向。 我希望能够使用 React History 将数据传递到下一个组件(页面)。
它会是这样的:
const history = useHistory({});
/* ... */
history.push({
pathname: '/page',
state: { data: data }
})
然后在接收器中检索状态,假设接收器是基于 class 的组件:
this.state.data
有没有可能用功能组件实现这样的功能?这个问题最干净的解决方案是什么?
感谢您的帮助
您传递给 history.push
的数据并非像那样本质上绑定到 class 组件,因此对于 class 或功能组件,您必须访问来自某处的位置状态,然后将其分配给组件的状态
如果功能组件是从路由渲染的,它应该接收 history
作为道具,然后你可以通过简单地做类似 history.location.state
的事情来获取该数据。然后你可以用它做任何你想做的事并通过 useState
我想您也可以使用那个钩子 useHistory
来获取位置状态。
类似于
function MyComponent() {
const history = useHistory()
return <div>
{JSON.stringify(history.location.state)}
</div>
}
// Rendered via <Route component={MyOtherComponent} />
function MyOtherComponent({ history }) {
return <div>
{JSON.stringify(history.location.state)}
</div>
}
你不能直接通过历史传递状态,但你可以轻松地传递你想通过历史传递的值,比如...
this.props.history.push('export', { value: data.dealer_userid, label: data.user_displayname, nicename: data.user_nicename, invid: data.dealer_invid, date: date });