我有一个List
显示多个Item
组件的组件。List
从 Redux 存储中获取其数据。
当商店更新时(例如因为我删除了一个项目),所有Item
s 都会重新渲染。这是为什么?
我知道我可以shouldComponentUpdate()
用来阻止新的渲染,但我认为 Redux 会在内部完成。
列表.js
import React, { PropTypes, Component } from 'react';
import { connect } from 'react-redux';
import Item from './Item';
class List extends Component {
render() {
const { items } = this.props;
return (
<div>
<h2>List</h2>
{items.map((item, index) => <Item key={index} name={item.name} />)}
</div>
);
}
}
const mapStateToProps = state => ({
items: state.items
});
export default connect(
mapStateToProps
)(List);
项目.js
import React, { PropTypes, Component } from 'react';
class Item extends Component {
render() {
console.log('Render', this.props.name); // The component is re-rendered even if the props didn't change
return (
<div>
{this.props.name}
</div>
);
}
}
Item.propTypes = {
name: PropTypes.string
};
export default Item;