reactjs - 仅对父组件中选定的反应子项执行操作
问题描述
在我的反应应用程序中,我有一个父列表组件Tests:
export class Items extends Component {
static propTypes = {
tests: PropTypes.array.isRequired,
getItems: PropTypes.func.isRequired
};
componentDidMount() {
this.props.getItems();
}
render() {
return (
<Fragment>
<Filters />
{this.props.items.map((item) => (
<Item key={item.id} item={item} />
))}
</Fragment>
);
}
}
const mapStateToProps = (state) => ({
items: state.items.items
});
export default connect(mapStateToProps, { getItems })(Items);
getItems和getItem操作:
export const getItems = () => dispatch => {
axios.get('/api/items/')
.then(res => {
dispatch({
type: GET_ITEMS,
payload: res.data
});
})
.catch(err => console.log(err))
export const getItem = (id) => dispatch => {
axios.get(`/api/items/${id}`)
.then(res => {
dispatch({
type: GET_ITEM,
payload: id
});
})
.catch(err => console.log(err))
和一个子项组件:
export class Item extends Component {
render() {
return (
<div key={this.props.item.id} className="main">
<p>{this.props.item.title}</p>
</div>
)
}
}
const mapStateToProps = (state) => ({
items: state.items.items
});
export default connect(mapStateToProps, { getItem })(Item);
当您单击项目组件获取它时,测试将在 map() 中重新呈现。我在第一次执行 map() 后得到结果。但随后this.props.tests得到一个空数组。如何处理 onClick 以便父组件不会重新渲染所有子组件?
解决方案
我忘记将bind()添加到我的方法getItem:
onClick={this.props.getItem.bind(this, this.props.item.id)}
有用。
推荐阅读
- git - 如何找出我的功能分支是从哪个共享分支分支出来的
- python-3.x - Py2app 应用程序未启动只是询问我是否要终止应用程序或打开控制台
- google-apps-script - 大型电子表格中的不同 Google 表单网址(如何找到链接的“表单回复”表)?
- python - 制作一个八进制到 UTF-8 的转换器(仅限英文字母)。什么是八进制转义字符
- python - 在 python 中解析 AndroidManifest.xml 时出现 ParseError
- node.js - Node js中的同步函数
- c# - Marshall struct 通过 sendmessage 将其传递给 delphi 记录
- c++ - 是什么导致我的 2D Perlin 噪声中出现这些伪影?
- java - 对 Spark scala 代码库所做的更改不会在运行时反映出来
- .htaccess - 使用 .htaccess 强制将文本附加到文件名的末尾