Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.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将数据传递到URL以外的其他组件_Javascript_Reactjs_Typescript_React Router - Fatal编程技术网

Javascript 如何使用React Router将数据传递到URL以外的其他组件

Javascript 如何使用React Router将数据传递到URL以外的其他组件,javascript,reactjs,typescript,react-router,Javascript,Reactjs,Typescript,React Router,我正试图用React Router和TypeScript将数据传递给另一个组件。我目前在url本身中传递一个slug,但我还需要传递一个与之关联的id。我不希望该id出现在路径本身中,因为它会泄漏有关我的数据库的信息。我环顾四周,只发现人们通过在道路上传递它来实现这一点 这是带有链接的组件。我想传递movie.id值。我省略了在电影中放置电影数据的获取。 export const MovieCards:React.FC=()=>{ const[movies,setMovies]=useState

我正试图用React Router和TypeScript将数据传递给另一个组件。我目前在url本身中传递一个slug,但我还需要传递一个与之关联的id。我不希望该id出现在路径本身中,因为它会泄漏有关我的数据库的信息。我环顾四周,只发现人们通过在道路上传递它来实现这一点

这是带有链接的组件。我想传递
movie.id
值。我省略了在电影中放置电影数据的获取。
export const MovieCards:React.FC=()=>{
const[movies,setMovies]=useState([]);
返回(
{movies.map((movie)=>(
{movie.title}
{movie.avg.toString().substr(0,4)}

))} ); };您的组件能够传递的不仅仅是url。通过将属性
设置为
对象
,而不是将路径名设置为
字符串
,可以使用它来传递复杂状态

export const MovieCards:React.FC=()=>{
const[movies,setMovies]=useState([]);
返回(
{movies.map((movie)=>(
{movie.title}
{movie.avg.toString().substr(0,4)}

))} ); };您的组件能够传递的不仅仅是url。通过将属性
设置为
对象
,而不是将路径名设置为
字符串
,可以使用它来传递复杂状态

export const MovieCards:React.FC=()=>{
const[movies,setMovies]=useState([]);
返回(
{movies.map((movie)=>(
{movie.title}
{movie.avg.toString().substr(0,4)}

))} );
};您可以通过
传递数据。它可以解决您不通过URL发送数据的问题。可以在对象中传递任意数量的数据

<Link to ={{
    pathname: {`/movie/${movie.slug}`}, 
    state: {  
        id: movie.id,  
    }
   }} >
 {movie.title}
</Link>

{movie.title}
电影id现在在MoviePage组件中传递

  export const MoviePage: React.FC = ({  id
}: InferProps<typeof Article.propTypes>) ) => {

      let { slug } = useParams();
      const { id } = state;

      return (
        <div>
          <div>Movie page</div>
          <div>{slug}</div>
          <h1>Id of Movie is : {id}</h1>
        </div>
      );
    };
//Check the id type in type script
Article.propTypes = {
  id: PropTypes.number.isRequired
};
export const MoviePage:React.FC=({id
}:InferProps))=>{
设{slug}=useParams();
const{id}=状态;
返回(
电影页面
{slug}
电影的Id为:{Id}
);
};
//检查类型脚本中的id类型
Article.propTypes={
id:PropTypes.number.isRequired
};

您可以通过
传递数据。它可以解决您不通过URL发送数据的问题。可以在对象中传递任意数量的数据

<Link to ={{
    pathname: {`/movie/${movie.slug}`}, 
    state: {  
        id: movie.id,  
    }
   }} >
 {movie.title}
</Link>

{movie.title}
电影id现在在MoviePage组件中传递

  export const MoviePage: React.FC = ({  id
}: InferProps<typeof Article.propTypes>) ) => {

      let { slug } = useParams();
      const { id } = state;

      return (
        <div>
          <div>Movie page</div>
          <div>{slug}</div>
          <h1>Id of Movie is : {id}</h1>
        </div>
      );
    };
//Check the id type in type script
Article.propTypes = {
  id: PropTypes.number.isRequired
};
export const MoviePage:React.FC=({id
}:InferProps))=>{
设{slug}=useParams();
const{id}=状态;
返回(
电影页面
{slug}
电影的Id为:{Id}
);
};
//检查类型脚本中的id类型
Article.propTypes={
id:PropTypes.number.isRequired
};

这就是Redux的原因。Redux允许您传递通用状态。ReDux将帮助你很快地完成这个任务。我不认为学习所有的RUDUX是一个快速的解决方案。如果在React本身中有一种方法可以做到这一点,那就是我所寻找的实际解决方案。这就是为什么Redux。Redux允许您传递通用状态。ReDux将帮助你很快地完成这个任务。我不认为学习所有的RUDUX是一个快速的解决方案。如果有一种方法可以在React本身内实现这一点,那就是我所寻找的实际解决方案。