Javascript 如何先设置state,然后运行onSubmit函数
我有一个来自另一个组件的对象,我想将对象值添加到我的数据中,但当我第一次单击提交时,Javascript 如何先设置state,然后运行onSubmit函数,javascript,reactjs,Javascript,Reactjs,我有一个来自另一个组件的对象,我想将对象值添加到我的数据中,但当我第一次单击提交时,控制台。log显示为空,下次就可以了。如何先设置状态 constpostform=({addPost})=>{ 常量[formData,setFormData]=useState({ 标题:“”, 说明:“”, 选项:{} }); 常数{ 标题 描述 选择权 }=表格数据; const onChange=e=>setFormData({…formData[e.target.name]:e.target.value
控制台。log
显示为空,下次就可以了。如何先设置状态
constpostform=({addPost})=>{
常量[formData,setFormData]=useState({
标题:“”,
说明:“”,
选项:{}
});
常数{
标题
描述
选择权
}=表格数据;
const onChange=e=>setFormData({…formData[e.target.name]:e.target.value});
const onSubmit=e=>{
e、 预防默认值();
常量oto={…选项,…新选项}
//>>第一次不工作
setFormData({…formData,选项:oto})
console.log(formData.options)
}
通过在useEffect中使用submitState解决了该问题。通过在useEffect中指定条件
const [startOnSubmit, changeOnSubmit] = useState(false)
useEffect(() => {
if (startOnSubmit) {
addPost(formData);
changeOnSubmit(false);
}
}, [formData, addPost, startOnSubmit, changeOnSubmit]);
const onSubmit = e => {
e.preventDefault();
const oto = { ...options, ...newOptions }
setFormData({
...formData,
options: oto,
category: selected === null ? '' : selected.id
});
changeOnSubmit(true)
}
onSubmit函数之外的console.log。它可能正在工作。设置状态为async这是否回答了您的问题?或者这一个useState不会立即触发,因为它是异步的,并且您没有在任何地方侦听更改。您需要使用useEffect挂钩:它是重复的,我第一次链接了错误的,现在它不允许让我纠正一下