reactjs - 当我删除一些内容并改变状态时,我的输入值没有改变
问题描述
职业是状态(对象数组类型)
{career.map(toCareerAndEducation)}
地图功能
const toCareerAndEducation = (info: Career, key: number) => {
return (
<Wrapper key={key}>
<Date>
<DateInput figure={4} placeholder='yyyy'/>
.
<DateInput figure={3} placeholder='mm'/>
~
<DateInput figure={4} placeholder='yyyy'/>
.
<DateInput figure={3} placeholder='mm' />
</Date>
<Content>
<ContentInput fontSize={33} id={String(key)} placeholder='mainContent' onChange={handleOnMainContentChange} />
<ContentInput fontSize={25} id={String(key)} placeholder='subContent' onChange={handleOnSubContentChange} />
</Content>
<DeleteButton id={String(key)} onClick={handleDleteButtonClicked}>
<TrashCanIcon src={String(Trashcan)} />
</DeleteButton>
</Wrapper>
)
}
事件处理程序
const handleOnMainContentChange = (event: React.ChangeEvent<HTMLInputElement>) => {
const index: number = Number(event.currentTarget.id)
career[index].companyName = event.target.value
}
const handleOnSubContentChange = (event: React.ChangeEvent<HTMLInputElement>) => {
const index: number = Number(event.currentTarget.id)
career[index].role = event.target.value
}
const handleDleteButtonClicked = (event: React.MouseEvent) => {
console.log('length: ' + career.length)
const index: number = Number(event.currentTarget.id)
console.log('inedx: ' + index)
var temp: Career[] = [...career]
temp.splice(index, 1)
console.log(temp)
setCareer(temp)
}
在这张图片中,我创建了 3 个内容并将其保存为默认值,然后更改输入值,
这是状态日志
然后我删除了第二个
但在浏览器视图中,它看起来像删除第三个。
但是,在状态日志中,第二个元素被很好地删除了,
我想查看 apear 就像状态一样我该怎么做???
解决方案
你永远不应该修改 React 中的状态对象。这是框架的基本属性,您应该阅读文档。https://reactjs.org/docs/state-and-lifecycle.html#using-state-correctly。
在这种情况下,我认为职业是您的状态,您直接在处理程序中对其进行修改,这会导致错误career[index].companyName = event.target.value
推荐阅读
- php - 如何声明一个我事先不知道项目索引号的数组
- python - python unittest相对导入
- node.js - 我在将 Gatsby 站点部署到 Netlify 时遇到问题?
- aws-cloudwatch-log-insights - 如何在 Amazon Cloudwatch Insights 中过滤子查询
- r - 暴露为 Web 服务的持久 R 模型返回错误答案
- java - parameter.method 或 argument.method 怎么可能?我认为它总是class.method。有人可以解释吗?
- python - 无法从链表中仅删除最后一个元素!(具有特定值的所有其他元素都被删除)
- r - 如何迭代分组变量以计算多个变量之一的平均值?
- python - Python - 组合多个 CSV 文件将文本字段呈现为数字
- excel - 检查用户表单条目是否重复