在 react hooks 中,如何将新创建的对象传递给状态对象?



如何在此处将err传递给errors : {}

const data = { name: "", errors: {} }
const [values, setValues] = useState(data)
const handleSubmit = () => {
const err = validate();  // I receive an object in err
setValues({ ...values, errors: err }) // I cant set err to //errors: {} above
}

来自 React DOC - State Hook,我们得到:

状态变量可以很好地保存对象和数组,因此您仍然可以将相关数据分组在一起。但是,与类中的 this.setState 不同,更新状态变量始终会替换它而不是合并它。

另外,从 Hooks FAQ:

现在,假设我们要编写一些逻辑,当用户移动鼠标时lefttop更改。请注意我们必须如何手动将这些字段合并到上一个状态对象中:

function handleWindowMouseMove(e) {
// Spreading "...state" ensures we don't "lose" width and height
setState(state => ({ ...state, left: e.pageX, top: e.pageY }));
}

因此,您当前的做法是正确的。

它们的方式可能只有在方法返回对象时才可能有效validate()

如果validate()返回一个字符串,数组...赋值setValues({ ...values, errors: err })可能会中断,因为errors期待一个对象

相关内容

  • 没有找到相关文章

最新更新