有谁能说出在组件中设置这些State变量的区别吗?在设置它的时候重新渲染会有什么不同吗?
function handleData(e){
inputData[e.target.name]= e.target.value
setInputData({...inputData})
console.log(setInputData)
}
function handleData(e){
inputData[e.target.name]= e.target.value
setInputData(inputData)
}
function handleData(e){
setInputData(...inputData,[e.target.name]:e.target.value)
}
我已经尝试过用不同的方式来使用点差运算符,有人能帮我吗?
1条答案
按热度按时间bqf10yzr1#
我假设您正在尝试更改某些组件的状态。基于此,下面是一个完整的代码来解释这个问题。
第一个是使用
spread(...)
操作符通过复制现有状态创建一个新对象。这是React中处理对象时更新状态的推荐方法。这确保了不变性。不变性是react中一个重要的概念。这篇博文深入探讨了React中的不变性。第二个mutatesinputData状态直接,这就是为什么会有没有重新渲染,应该避免这种。它会导致重新呈现和更新UI的问题。相反,您可以使用spread运算符创建一个新对象来复制现有状态,然后更新新对象。
第三种是使用spread操作符创建一个新对象,复制现有状态,然后使用
[e.target.name]: e.target.value
更新新对象。这也是一种在React中更新状态的有效方法