【发布时间】:2017-03-03 13:00:35
【问题描述】:
我有一个 List 组件,它显示多个 Item 组件。 List 从 Redux 存储中获取数据。
当商店更新时(例如因为我删除了一个项目),所有Items 都会重新渲染。 为什么会这样?
我知道我可以使用 shouldComponentUpdate() 来阻止新的渲染,但我认为 Redux 会在内部完成。
List.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);
Item.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;
【问题讨论】:
-
因为你在 props 中有一个新的数组项。
-
@Andrew 我知道
List被重新渲染,因为items属性已更新。但是Item呢?它的道具没有改变
标签: reactjs redux react-redux