Javascript Redux - 如何通过 id 从商店获取元素
Javascript Redux - how to get an element from store by id
在过去的几周里,我一直在努力学习 React 和 Redux。
现在我遇到了一个问题,但我还没有找到正确的答案。
假设我在 React 中有一个页面从 link 获取道具。
const id = this.props.params.id;
现在在此页面上,我想显示一个来自 STORE 的具有此 ID 的对象。
const initialState = [
{
title: 'Goal',
author: 'admin',
id: 0
},
{
title: 'Goal vol2',
author: 'admin',
id: 1
}
]
我的问题是:
从 STORE 查询对象的函数应该在页面文件中,在 render 方法之前,还是应该使用 action creators 并将该函数包含在 reducer 中。
我注意到 reduceres 似乎只包含对商店有影响的动作,但我的只是查询商店。
提前致谢。
当您将组件连接到 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 状态和组件的 props,从中你可以决定将什么作为 props 发送到你的组件。因此,根据我们所有的项目,寻找 ID 与我们的 URL.
匹配的项目
https://github.com/rackt/react-redux/blob/master/docs/api.md#arguments
import _ from 'lodash'; const mapStateToProps = (state, ownProps) => ({ item: _.find(state.data, (e) => e.product_id == ownProps.match.params.productID) });
这里product_id
是API中的标签,productID
是我在react-router中给的参数。
注意:不要忘记 match
关键字
在过去的几周里,我一直在努力学习 React 和 Redux。 现在我遇到了一个问题,但我还没有找到正确的答案。
假设我在 React 中有一个页面从 link 获取道具。
const id = this.props.params.id;
现在在此页面上,我想显示一个来自 STORE 的具有此 ID 的对象。
const initialState = [
{
title: 'Goal',
author: 'admin',
id: 0
},
{
title: 'Goal vol2',
author: 'admin',
id: 1
}
]
我的问题是: 从 STORE 查询对象的函数应该在页面文件中,在 render 方法之前,还是应该使用 action creators 并将该函数包含在 reducer 中。 我注意到 reduceres 似乎只包含对商店有影响的动作,但我的只是查询商店。
提前致谢。
当您将组件连接到 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 状态和组件的 props,从中你可以决定将什么作为 props 发送到你的组件。因此,根据我们所有的项目,寻找 ID 与我们的 URL.
匹配的项目https://github.com/rackt/react-redux/blob/master/docs/api.md#arguments
import _ from 'lodash'; const mapStateToProps = (state, ownProps) => ({ item: _.find(state.data, (e) => e.product_id == ownProps.match.params.productID) });
这里product_id
是API中的标签,productID
是我在react-router中给的参数。
注意:不要忘记 match
关键字