我在我的 UsersListContainer 的回调中渲染“详细信息”组件,如下所示:
class UsersListContainer extends Component {
goToUserById(id) {
if (!id) { return false; }
this.props.history.push(`/users/${id}`);
}
render() {
return (
<UserList
goToUser={(id) => this.goToUserById(id)}/>
);
}
}
我的“详细信息”容器:
class UserDetailsContainer extends Component {
componentDidMount() {
this.props.getUserDetails(this.props.match.params.id);
}
render() {
return (
<UserDetails user={this.props.selectedUser}/>
);
}
}
const mapDispatchToProps = dispatch => {
return {
getUserDetails: id => dispatch(getUser(id))
};
};
const mapStateToProps = (state) => ({
selectedUser: state.user.selectedUser
});
在我的展示性“用户”组件中,我显示了一组来自 redux 存储的数据,如下所示:
class UserDetails extends Component {
constructor(props) {
super(props);
this.state = {
name: this.props.user.name,
address: this.props.user.name,
workingHours: this.props.user.workingHours,
phone: this.props.user.phone
};
}
我没有直接显示组件props,而是使用状态,因为它们是要编辑的。这是可行的,但问题是所有这些props都不会与组件加载同时更新,这意味着当我第一次选择用户时,它会显示正确的信息,然后我切换回“/users”以选择另一个,以及他的props保持与前一个用户的props相同。我试过 componentWillUnmount 来清除数据,但没有用