Redirect React管理员重定向和道具

Redirect React管理员重定向和道具,redirect,react-admin,Redirect,React Admin,我使用React Admin userRedirect钩子,重定向到一个“页面”,这是一个组件。是否有方法将数据传递到我重定向到的页面/组件? 我试着这样做,并观察了以下几点 我要重定向到的页面: const PublicPage = (props) => { console.log('data: ' + props.data); return( <Card> <Title title="Public Page&

我使用React Admin userRedirect钩子,重定向到一个“页面”,这是一个组件。是否有方法将数据传递到我重定向到的页面/组件? 我试着这样做,并观察了以下几点

我要重定向到的页面:

const PublicPage = (props) => {
    console.log('data: ' + props.data);

    return(
        <Card>
        <Title title="Public Page" />
        <CardContent>
            This is a public page. + {props.data}
        </CardContent>
    </Card>
    )
}
constpublicpage=(道具)=>{
console.log('data:'+props.data);
返回(
这是一个公共页面。+{props.data}
)
}
如果执行重定向('/public',{data:'this some data'}),控制台日志将显示'data:undefined',而不显示任何数据

这对RA来说是可行的吗?谢谢你的建议


Christian

您可以重定向到具有查询字符串(例如,/public?foo=bar')的位置,并从PublicPage组件读取该查询字符串

或者,您可以使用位置状态—react router提供的某种数据容器。这不受
useRedirect
的支持,但手工操作并不困难:

import { useHistory } from 'react-router-dom';

const useRedirectToPageWithState = () => {
   const history = useHistory();
   return useCallback((pathname, state) => {
      history.push({
          pathname,
          state
      })
   }, [history]);
}
然后,在PublicPage组件中,可以使用以下命令读取位置状态:

constpublicpage=()=>{
const{state:data}=useLocation();
//现在,数据包含您传递到页面的内容

您可以重定向到具有查询字符串的位置(例如,“/public?foo=bar”),并从PublicPage组件读取该查询字符串

或者,您可以使用位置状态—react router提供的某种数据容器。
useRedirect
不支持此功能,但手工操作并不困难:

import { useHistory } from 'react-router-dom';

const useRedirectToPageWithState = () => {
   const history = useHistory();
   return useCallback((pathname, state) => {
      history.push({
          pathname,
          state
      })
   }, [history]);
}
然后,在PublicPage组件中,可以使用以下命令读取位置状态:

constpublicpage=()=>{
const{state:data}=useLocation();
//现在,数据包含您传递到页面的内容

谢谢François。第二种方法对我来说似乎更安全,因为数据不是通过URL传输的。可能是添加到react admin的一个不错的功能?ChristianThanks François。第二种方法对我来说似乎更安全,因为数据不是通过URL传输的。可能是添加到react admin?Christian的一个不错的功能