Reactjs 用于初始化useState钩子的传入属性在调用钩子';s更新程序方法

Reactjs 用于初始化useState钩子的传入属性在调用钩子';s更新程序方法,reactjs,redux,react-redux,react-hooks,Reactjs,Redux,React Redux,React Hooks,给定以下代码: constmycomponent=({myObj})=>{ const[myStatefulObj,setMyStatefulObj]=useState(myObj.subObj) 常量handleChange=()=>{ const updatedObj={newProperty:Math.random()} setMyStatefulObj(updatedObj)//myObj也被更新了! } 返回 } 我正试图用useState初始化一个新的本地道具,并用从父组件传入的道

给定以下代码:

constmycomponent=({myObj})=>{
const[myStatefulObj,setMyStatefulObj]=useState(myObj.subObj)
常量handleChange=()=>{
const updatedObj={newProperty:Math.random()}
setMyStatefulObj(updatedObj)//myObj也被更新了!
}
返回
}
我正试图用
useState
初始化一个新的本地道具,并用从父组件传入的道具补水它的初始值

当我使用
setMyStatefulObj
更新道具时,一切正常,只是它也在更新传递到组件中的道具

这是一个不希望出现的副作用,我以前从未遇到过

传入的道具来自父级,父级使用
react redux
useSelector
钩子中的选择器创建道具


没有调度任何操作或任何操作,但只要记录
myObj
属性的值,就会显示它确实在每次调用本地
setMyStatefulObj
方法时都在更新。

您描述的效果没有意义,我无法重现它。也许你可以创建一个代码片段并分享它。

我认为这不是由hooks函数引起的

正如你所说,我在中创建了一个简单的示例,显然没有复制。你可以编辑这个沙箱并尝试模拟你的情况,也许你可以找到根本原因

但是由于您使用的是redux,我建议您使用
useSelector
来选择钩子函数中所需的状态,这样您就不会有这种担心,而且它会有更好的性能(如果您传递道具,每次myObj更改钩子组件时都会重新渲染)