Javascript Redux-如何通过id从store中获取元素

Javascript Redux-如何通过id从store中获取元素,javascript,reactjs,flux,redux,Javascript,Reactjs,Flux,Redux,在过去的几周里,我一直在努力学习React和Redux。 现在我遇到了一个我没有找到正确答案的问题 假设我在React中有一个页面,它从链接中获取道具 const id = this.props.params.id; 现在在这个页面上,我想显示一个来自商店的具有这个ID的对象 const initialState = [ { title: 'Goal', author: 'admin', id: 0 }, {

在过去的几周里,我一直在努力学习React和Redux。 现在我遇到了一个我没有找到正确答案的问题

假设我在React中有一个页面,它从链接中获取道具

const id = this.props.params.id;
现在在这个页面上,我想显示一个来自商店的具有这个ID的对象

 const initialState = [
      {
        title: 'Goal',
        author: 'admin',
        id: 0
      },
      {
        title: 'Goal vol2',
        author: 'admin',
        id: 1
      }
    ]
我的问题是: 从存储中查询对象的函数应该在页面文件中,在render方法之前,还是应该使用action creators并在reducer中包含该函数。 我注意到reducere似乎只包含对存储有影响的操作,而我的reducere只是查询存储


提前感谢。

将组件连接到redux时,您可以使用MapStateTops功能查询存储:

import React from 'react';
import { connect } from 'react-redux';
import _ from 'lodash';

const Foo = ({ item }) => <div>{JSON.stringify(item)}</div>;

const mapStateToProps = (state, ownProps) => ({
  item: _.find(state, 'id', ownProps.params.id)
});

export default connect(mapStateToProps)(Foo);
从“React”导入React;
从'react redux'导入{connect};
从“lodash”进口;
constfoo=({item})=>{JSON.stringify(item)};
const mapStateToProps=(state,ownProps)=>({
项:u.find(状态为'id',ownProps.params.id)
});
导出默认连接(mapstatetops)(Foo);
(此示例使用lodash-

MapStateTops函数接受整个redux状态和组件的道具,从中可以决定将什么作为道具发送到组件。因此,给定所有项目,查找id与URL匹配的项目


从“lodash”导入;const-mapStateToProps=(state,ownProps)=>({item:u.find(state.data,(e)=>e.product_id==ownProps.match.params.productID)})

这里,
product\u id
是API中的一个标签,
productID
是我在react路由器中给出的参数


注意:不要忘记匹配关键词
非常感谢:)@Dylan,我发现
\u find(state,{id:ownProps.params.id})
可以正常工作。从这个
.find(state'id',ownProps.params.id)
我没有得到正确的结果。由于引入了筛选器,您可以直接使用
this.state.filter(item=>item.id==id)
@PatrickMutuku
filter
将在那里返回一个数组——您还需要获取第一个索引项--
filter(…)[0]
。现在,如果支持,您还可以使用
Array.prototype.find