【发布时间】:2019-07-20 15:45:20
【问题描述】:
当我的props 数据将路由到新路径时,我想将其从父级传递给子级。
我尝试了一些https://github.com/ReactTraining/react-router/issues/4105,但当我通过{...props} 传递它时实际上并没有工作。
任何帮助都会非常有用。
//App.js
class App extends Component{
constructor(props){
super(props);
}
render(){
return (
<div className="App">
<div className="navbar">
<h2 className="center">Tiny Book Library</h2>
</div>
<Switch>
<Route exact path="/" component={PostBook}/>
<Route exact path="/abc" render={props => <AllBook someProp="2" {...props} />} />
</Switch>
</div>
);
}
}
//Allbook.js
class AllBook extends Component {
constructor(props){
super(props);
}
render(){
return(
<div>
{Object.keys(this.props.posts).length !== 0 ? <h1 className="post-heading">All books</h1> : ""} {/*To check if array is empty or not*/}
{/*Arrow function to map each added object*/}
{this.props.posts.map((post) =>(
<div key={post.id}>
{post.editing ? <EditComponent post={post} key={post.id}/> :
<Post key={post.id} post={post}/>}
</div>
))}
</div>
);
}
}
const mapStateToProps = (state) => {
return{
posts: state
}
}
export default connect(mapStateToProps)(AllBook);
//减速器
const postReducer = (state = [], action) => {
switch(action.type){
case 'ADD_BOOK':
return state.concat([action.data]);
case 'DELETE_BOOK':
return state.filter((post) => post.id !== action.id);
case 'EDIT_BOOK':
return state.map((post)=>post.id === action.id ? {...post, editing:!post.editing} : post)
case 'UPDATE':
return state.map((post)=>{
if(post.id === action.id){
return{
...post,
title: action.data.newTitle,
number:action.data.newNumber,
author:action.data.newAuthor,
description:action.data.newDescription,
editing: !post.editing
}
}
else return post;
})
default:
return state;
}
}
export default postReducer;
【问题讨论】:
-
父母的哪个道具在从父母传递给孩子时遇到问题?如果是帖子,那么如果您从 Redux 商店获取帖子,我将不得不问为什么要通过帖子。如果不是,那就是另一个问题了。
-
@AlexanderStaroselsky 是的,来自
postbook我想把它传递给allBook,这样我所有的书都可以在那里看到。但是在更改为路由器props时,数据不存储任何值。 -
@AlexanderStaroselsky 是的,我从
redux商店获得posts。那我需要改变什么? -
请问您为什么不将 AllBook 连接到 redux,以便在准备好时接收帖子列表?
-
@AdolfoOnrubia 嗯不确定。你认为我需要在这里改变什么?我已经更新了我的代码。
标签: javascript reactjs react-router react-props