小编典典

Javascript Redux-如何通过ID从存储中获取元素

reactjs

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

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

const id = this.props.params.id;

现在,在此页面上,我想显示具有此ID的STORE中的对象。

 const initialState = [
      {
        title: 'Goal',
        author: 'admin',
        id: 0
      },
      {
        title: 'Goal vol2',
        author: 'admin',
        id: 1
      }
    ]

我的问题是:从STORE查询对象的函数应该在页面文件中,在render方法之前,还是应该使用动作创建者并将该函数包括在reducers中。我注意到,reduce似乎只包含对商店没有影响的动作,而我的只是查询商店。

先感谢您。


阅读 288

收藏
2020-07-22

共1个答案

小编典典

将组件连接到redux时,可以使用mapStateToProps函数查询商店:

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);

(此示例使用lodash- _

mapStateToProps函数接受整个redux状态和组件的道具,然后您可以决定将什么作为道具发送到组件。因此,鉴于我们所有的商品,请查找ID与我们的网址匹配的商品。

https://github.com/rackt/react-
redux/blob/master/docs/api.md#arguments

2020-07-22