【发布时间】:2020-12-11 10:38:51
【问题描述】:
我的父组件拥有这样的状态
const [formData,setFormData]=useState({
Basics:{
job_title:'',
job_type:null,
ppo:true,
emp_type:null,
start_date_month:null,
start_date_year:null,
end_date_month:null,
end_date_year:null
},
Details:{},
Preferences:{},
Colleges:{}
})
我将整个状态的Basics 对象作为道具传递给子组件。但是,我只希望子组件能够更改 Basics 对象而不是整个状态,如果我直接通过 setFormData 是不可能的
<Basics state={formData.Basics} setState={setFormData}/>
有没有办法我可以只将setFormData 的一部分传递给孩子,这样它就不能修改formData 的其他属性?
【问题讨论】:
-
这就是为什么你需要使用传播对象来只更新你想要的状态。 ``` {...formData,Basics:yourNewData} ``` 一般来说好的经验法则你有很多状态。为此使用 useReducer
-
谢谢,这就是我现在正在做的事情!你能提供一个如何使用 useReducer 的例子吗?
-
使用 useReducer 功能更新
标签: javascript reactjs react-hooks use-state react-state