首页 > 解决方案 > 如何根据路由参数仅导入一个用户?

问题描述

我的商店:

store={
  users: [
    {id:1},
    {id:2},
    {id:3}
  ]
}

现在,我只想根据路由参数导入其中一个用户,例如。

id = this.props.match.params.user_id;

问题是.. 如何在 mapStateToProps 函数从我的商店获取数据之前建立上面的 id 变量?我的 mapStateToProps:

return {
  singleUser: state.users[id]
};

返回未定义。我尝试将变量“id”放在 mapStateToProps 中,但我认为参数在它开始获取数据时尚未建立。

编辑:另外,我无法在 mapStateToProps 中建立 id 变量,因为 this.props 在组件之外是未定义的。我该怎么做?

标签: javascriptreactjsreduxreact-reduxstore

解决方案


您可以使用数组方法find来获取匹配的对象id

return {
  singleUser: state.users.find(user => user.id === id)
};

推荐阅读