在过去的几周里,我一直在尝试学习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似乎只包含对商店没有影响的动作,而我的只是查询商店。
先感谢您。
将组件连接到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