Javascript 通过路由对传递对象进行反应?
我要做的是设置对象的路由。例如: 我为以下各项设置路由:Javascript 通过路由对传递对象进行反应?,javascript,reactjs,react-router,react-bootstrap,react-router-dom,Javascript,Reactjs,React Router,React Bootstrap,React Router Dom,我要做的是设置对象的路由。例如: 我为以下各项设置路由: http://localhost:3000/projects 它显示了我所有的项目列表(它工作得很好) 然后我想选择project并查看详细信息,但它无法正常工作: http://localhost:3000/projects/3 它看起来是什么样子: 当我点击Details按钮时,它会将我发送到/projects:id,但我得到一个错误,project中的项目未定义 我的密码。我将所有路由存储在主App.js文件中: class
http://localhost:3000/projects
它显示了我所有的项目列表(它工作得很好)
然后我想选择project并查看详细信息,但它无法正常工作:
http://localhost:3000/projects/3
它看起来是什么样子:
当我点击Details
按钮时,它会将我发送到/projects:id
,但我得到一个错误,project
中的项目未定义
我的密码。我将所有路由存储在主App.js
文件中:
class App extends Component {
render() {
return (
<div>
<BrowserRouter>
<div>
<Route exact path="/projects" component={ProjectsList} />
<Route exact path="/projects/:id" component={ProjectDetails} />
</div>
</BrowserRouter>
</div>
);
}
}
export default App;
通过链接到我的浏览器将我传递到正确的URL(项目/2…
等),但我不知道如何将项目的对象传递到项目详细信息.js
组件。其代码如下:
class ProjectDetails extends Component {
render() {
return <li>{this.props.project.description}</li>;
}
}
export default ProjectDetails;
类项目详细信息扩展组件{
render(){
return{this.props.project.description} ;
}
}
导出默认项目详细信息;
您能告诉我,如何通过链接将项目的对象传递到ProjectDetails.js
?现在,我得到的描述是未定义的(很明显,因为我没有向组件传递任何详细信息)。您需要在这里使用mapstatetops
。并从react redux
将组件包装在concet
中
应该是这样的:
import {connect} from 'react-redux';
class ProjectDetails extends Component {
render() {
return <li>{this.props.project.description}</li>;
}
}
function mapStateToProps(state, ownProps){
const projectInstance = DATA //the Data you are getting or fetching from the ID.
return { project : projectInstance }
}
export default connect((mapStateToProps)(ProjectDetails))
从'react redux'导入{connect};
类ProjectDetails扩展组件{
render(){
return{this.props.project.description} ;
}
}
函数mapStateToProps(状态,ownProps){
const projectInstance=DATA//从ID获取的数据。
返回{project:projectInstance}
}
导出默认连接((MapStateTops)(项目详细信息))
这就是它的样子
class Project extends Component {
render() {
return (
<ButtonToolbar>
<ListGroupItem>{this.props.project.name</ListGroupItem>
<Link to={`/projects/${this.props.project.id}`}>
<Button>Details</Button>
</Link>
</ButtonToolbar>
);
}
}
function mapStateToProps(state, ownProps){
return { project : { id: ownProps.params.id } }
}
export default connect((mapStateToProps)(Project))
类项目扩展组件{
render(){
返回(
{this.props.project.name
细节
);
}
}
函数mapStateToProps(状态,ownProps){
返回{project:{id:ownProps.params.id}
}
导出默认连接((mapStateToProps)(项目))
在路线中使用渲染方法并传递道具
<Route exact path="/projects/:id" render={() => (
<ProjectDetails
project = {project}
/>
)}/>
(
)}/>
我投了反对票,如果我能知道,那就好了,因为什么?但是Project.js
应该如何获得你提到的数据呢?
<Route exact path="/projects/:id" render={() => (
<ProjectDetails
project = {project}
/>
)}/>