【发布时间】:2018-12-20 02:33:12
【问题描述】:
我正在尝试了解如何使用 react/redux 过滤项目列表。我已经建立了这个例子https://codesandbox.io/s/m3n0x7mqzj
我希望当我单击类别时,产品 category_id 等于类别 id,然后返回相同 id 的产品
action.js :-
export const selectCategory = (data) => {
console.log("You clicked on category: ", data.name);
return {
type: 'CATEGORY_SELECTED',
payload: data
}
};
reducer-category.js
export default function (state = null, action) {
switch (action.type) {
case 'CATEGORY_SELECTED':
return action.payload;
default:
break;
}
return state;
}
category.js:-
import React, { Component } from 'react';
import {bindActionCreators} from 'redux';
import {connect} from 'react-redux';
import {selectCategory} from '../actions/index';
class Category extends Component{
renderList() {
return this.props.Data.categories.map((user) => {
return (
<option
key={user.id}
onClick={() => this.props.selectCategory(user)}
>
{user.name}
</option>
);
});
}
render() {
return (
<select>
{this.renderList()}
</select>
);
}
}
function mapStateToProps(state) {
return {
Data: state.Data
};
}
function matchDispatchToProps(dispatch){
return bindActionCreators({selectCategory: selectCategory}, dispatch);
}
export default connect(mapStateToProps, matchDispatchToProps)(Category);
【问题讨论】:
-
您能否详细说明您的问题?看起来很模糊,很难理解。可能会有所帮助
-
我正在处理您的代码框,但您删除了您的问题!你的项目有很多错误。大多数事情都是错误的。减速器、状态、动作、生命周期……你应该在 redux 上工作并再次做出反应。我将从您的沙箱中给出工作示例,请不要删除问题。
-
@akcoban 哦,真的很抱歉,我不知道您正在处理我的代码和框请给我工作示例链接
-
@SyedSadaifRizvi 我想问你一个问题。为什么将数据存储在 reducer 中?通常你会从 ajax 请求中获取数据吗?
-
@akcoban 如何仅为输入字段上的数字添加验证codesandbox.io/s/5pn421y2p
标签: javascript reactjs redux