javascript - React.memo 在 prevProps 和 nextProps 上总是包含相同的值
问题描述
我有一个功能组件JobItem
。在我的父容器中,我管理状态。除了记忆之外,一切都很好,因为prevProps
和nextProps
属性总是相等的。
这是我的组件:
function areEqual(prevProps, nextProps) {
console.log(prevProps.job_item.quantity)
console.log(nextProps.job_item.quantity)
return false
};
const JobItem = React.memo(props => {
return (
....
)
}, areEqual);
export default JobItem;
这是我的事件处理程序:
handleItemChange = (item, event) => {
item[event.target.name] = event.target.value;
this.setState({
job: this.state.job
})
}
在我的areEqual
函数中,我必须返回 false 才能更新组件,因为nextProps.job_item.quantity
它总是等于prevProps.job_item.quantity
. 我认为这与我的事件处理程序有关,但我不确定如何解决这个问题。
这是一个数量字段的示例,它通过首先传递一个实例job_item
然后传递事件本身来调用处理程序,这允许我更改quantity
作业项上的属性,该属性是当前状态的一部分,然后将状态设置为当前修改后的状态对象。状态对象包含一个job
包含 的数组items
。
<TextField
name={name}
value={value}
label={label}
variant="outlined"
type="number"
onChange={e => handleItemChange(item, e)}
InputLabelProps={{
shrink: true,
}}
/>
解决方案
推荐阅读
- android - Android,在android项目中加载大量图片
- c# - Jenkins 在 C# 上使用 Access 数据库引擎构建用于 Selenium 测试,获取 Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册
- python - Python 错误:ValueError:长度不匹配:预期轴有 4 个元素,新值有 5 个元素
- python - 从python中的文本文件中获取特定的行和数据
- node.js - 使用 Git 和 Node/Npm 进行多部分项目的良好项目设置
- trace32 - 如果启用断点,Lauterbach Trace 32 ICE 再次进入 main
- javascript - 如何创建一个不会在旧浏览器上导致错误的 ES6 模块?
- javascript - VUE CLI - 如何导入脚本和样式
- git - 在存储库目录外使用 git 远程命令
- php - WordPress 编辑器未更新文件:无法与站点通信以检查致命错误