Reactjs React useState覆盖状态对象而不是合并

Reactjs React useState覆盖状态对象而不是合并,reactjs,Reactjs,React没有合并我对状态对象所做的更改,而是完全覆盖它 这可能是由上下文引起的吗?我不确定是否可以直接作为道具传递分派事件。我尝试过在另一个函数中包装setParams,例如在中,但是没有效果 预期产出 {宽度:400,高度:400,笔划重量:0.25,颜色:“#d9eb37”,分辨率:10} 电流输出 {color:#d9eb37} 反应上下文保存状态 const Context=createContext(); 常量提供程序=({children})=>{ const[params,s

React没有合并我对状态对象所做的更改,而是完全覆盖它

这可能是由上下文引起的吗?我不确定是否可以直接作为道具传递分派事件。我尝试过在另一个函数中包装
setParams
,例如在中,但是没有效果

预期产出

{宽度:400,高度:400,笔划重量:0.25,颜色:“#d9eb37”,分辨率:10}
电流输出

{color:#d9eb37}
反应上下文保存状态

const Context=createContext();
常量提供程序=({children})=>{
const[params,setParams]=useState({
宽度:400,
身高:400,
冲程重量:0.25,
颜色:“ad3e00”,
决议:10
});
返回(
{儿童}
);
};
通用输入组件

const输入=()=>{
const{params,setParams}=useContext(Context);
渲染(
setParams({color:e.target.value})}
/>
);
}

useState
不会像类组件中的
setState
那样合并状态,您必须自己完成这项工作


onChange={(e)=>setParams((params)=>({…params,color:e.target.value}))

useState
不像类组件中的
setState
那样合并状态,您必须自己完成这项工作


onChange={(e)=>setParams((params)=>({…params,color:e.target.value}))}

这就是
useState
的工作原理。它将替换该值,而不进行任何合并。这取决于您自己。我建议您使用of
setParams
设置状态(仅在上述链接问题的评论和未被接受的答案中提及)。这就是
useState
的工作原理。它将替换该值,而不进行任何合并。这取决于您自己。我建议您使用of
setParams
设置状态(仅在上述链接问题的评论和未被接受的答案中提及)。