我正在做一个项目,我必须将数据从一页传递到另一页。 例如,我在首页上有数据
let data=[
{id:1,name:'Ford',color:'Red'},
{id:2,name:'Hyundai',color:'Blue'}
]
我的第一个组件页面上,我用名称呈现此数据列表
class ListDetail extends Component {
constructor();
handleClick(data){
console.log(data);
}
render() {
return (
<div>
<Hello name={this.state.name} />
<ul>
{data.map((data,i) => {
return <li onClick={this.handleClick.bind(this,data)}>{data.name}</li>
})}
</ul>
</div>
);
}
}
我想将此数据传递到下一个页面,我需要该数据以及比此更多的数据。我正在使用React Router4。任何建议或帮助都会有所帮助。
答案 0 :(得分:9)
您可以使用react-router中的Link组件并将<div id="app">
<ul>
<li>
item 1
</li>
<li>
item 2
</li>
</ul>
</div>
指定为对象,并在其中指定路径名作为要到达的路由。然后添加一个变量,例如to={}
保留您要传递的值。请参见下面的示例。
使用data
组件:
<Link />
使用<Link
to={{
pathname: "/page",
data: data // your data array of objects
}}
>
history.push()
使用以上任意一个选项,您现在都可以按照页面组件中的以下内容访问位置对象上的this.props.history.push({
pathname: '/page',
data: data // your data array of objects
})
。
data
在另一个示例here中,您可以看到一个如何将值与路由一起传递的示例。
有关以下内容,可以找到来自React Router文档的更多信息:
Link compoment
history object
状态管理工具。
答案 1 :(得分:3)
您可以使用react-router的Link
组件并执行以下操作:
<Link to={{
pathname: '/yourPage',
state: [{id: 1, name: 'Ford', color: 'red'}]
}}> Your Page </Link>
,然后使用this.props.location.state
您还可以考虑在整个应用程序(https://redux.js.org/)中使用redux进行状态管理。
答案 2 :(得分:1)
如何在 reactjs 中将数据传递到另一个组件路由器
登录.jsx
handleClickSignIn(){
console.log("come handle click fun");
this.props.history.push( {pathname: "/welcome",
state: { employee:"Steven" }});
}
欢迎.jsx
componentDidMount()
{
console.log(this.props.location.state.employee);
}
答案 3 :(得分:0)
假设您的另一页是组件,则可以将数据作为道具传递,这将在下一页提供。不过要注意一点,您必须使用<Link />
中可用的react-router 4
组件,而不是使用<a></a>
会导致重新加载整个页面从而访问丢失数据的组件。
答案 4 :(得分:0)
当你想在一个对象中发送一个页面时,你必须在你的目标文件中导入你的页面,然后在你的目标文件中再次导入你的页面:
import Home from './componenets/home/home';
import ColdDrink from './componenets/coldDrink/coldDrink';
import HotDrink from './componenets/hotDrink/hotDrink';
import CheaseCake from './componenets/cheaseCake/cheaseCake';
import Lost from './componenets/404/lost';
const link = [
{
name : "Cold Drink",
link : "/ColdDrink",
router : <ColdDrink/>
},
{
name : "Hot Drink",
link : "/HotDrink",
router : <HotDrink/>
},
{
name : "chease Cake",
link : "/CheaseCake",
router : <CheaseCake/>
},
{
name : "Home",
link : "/",
router : <Home/>
},
{
name : "",
link : "",
router : <Lost/>
}
];
并且在您的目标文件中,您必须映射您的对象...
const links = (this.props.link);
{links.map((item, i) => (
{item.router}
))}