【发布时间】:2018-10-12 06:17:56
【问题描述】:
我对使用 Redux 还是很陌生,我在尝试将我的 action 和 reducer 正确地绑定到另一个组件时遇到了问题。所以我只是尝试一些简单的事情,比如在帖子中添加评论。用户输入他们的名字,然后输入他们的评论,我希望两者都显示。我试图找到在我的减速器中写这个的最佳方法。
这是我的行动
export const ADD_COMMENT = 'ADD_COMMENT';
export const addComment = (author, comment) => ({
type: ADD_COMMENT,
author,
comment
});
这是我的 cmets.js
import React from 'react';
import {connect} from 'react-redux';
import CommentForm from './comment-form';
export function Comments(props) {
const comments = props.comments.map((comment, index) => (
<li key={index}>
<div className="author">{comment.author} says:</div>
<div className="comment">{comment.comment}</div>
</li>
));
return (
<section>
<h2>Comments</h2>
{comments.length ? <ul>{comments}</ul> : <div>No comments</div>}
<h3>Add a comment</h3>
<CommentForm />
</section>
);
}
export const mapStateToProps = (state, props) => ({
comments: state.comments
});
export default connect(mapStateToProps)(Comments);
这是我的 reducer.js
import {ADD_COMMENT} from './actions';
const initialState = {
comments: []
};
export default function(state = initialState, action){
if(action.type === ADD_COMMENT){
return Object.assign({}, state, {
comments: action.comments
});
}
return state;
}
按照我现在的方式,我得到一个“无法读取未定义的属性映射。我尝试将作者:”添加到我的 initialState 和作者:action.author 在我的减速器的函数中,但仍然是同样的事情. 所以我知道我的问题与我如何编写减速器有关。
【问题讨论】:
-
你是如何导入评论组件的
标签: javascript reactjs redux