В PostItem.jsx
у вас есть следующее:
import React from "react";
import { connect } from "react-redux";
import { onSelectPost } from "../actions/index";
const PostItem = props => (
<div
onClick={() => props.onSelectPost(props)}
className={!props.active ? "card" : "card border border-primary"}
style={{ width: "24rem" }}
>
<div className="card-body">
<h5 className="card-title">{props.title}</h5>
<p className="card-text">{props.body}</p>
</div>
</div>
);
const mapStateToProps = state => ({
active: state.active
});
const mapDispatchToProps = dispatch => ({
onSelectPost: post => dispatch(onSelectPost(post))
});
export default connect(
mapStateToProps,
mapDispatchToProps
)(PostItem);
Вы используете state.active
в mapStateToProps
для управления классом CSS.В этом государственном имуществе нет ничего пост-специфического.Это единственный логический тип, который будет влиять на каждое сообщение.
Если я изменю ваш mapStateToProps
на следующий:
const mapStateToProps = (state, ownProps) => ({
active: state.selectedPost.id === ownProps.id
});
, похоже, он будет работать.