Javascript 如何使用React Router将数据传递到URL以外的其他组件
我正试图用React Router和TypeScript将数据传递给另一个组件。我目前在url本身中传递一个slug,但我还需要传递一个与之关联的id。我不希望该id出现在路径本身中,因为它会泄漏有关我的数据库的信息。我环顾四周,只发现人们通过在道路上传递它来实现这一点 这是带有链接的组件。我想传递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
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本身内实现这一点,那就是我所寻找的实际解决方案。