Javascript 我收到一个TypeError:使用object.assign时无法将未定义或null转换为object
也许有更好的方法可以做到这一点,但在此之前,我只是不想知道为什么这会抛出一个错误。问题是由Javascript 我收到一个TypeError:使用object.assign时无法将未定义或null转换为object,javascript,reactjs,Javascript,Reactjs,也许有更好的方法可以做到这一点,但在此之前,我只是不想知道为什么这会抛出一个错误。问题是由setState()引起的吗 onSubmit = async (dispatch, e) => { e.preventDefault(); const { name, email, phone } = this.state; 问题就在这里,但我不明白为什么 出现错误是因为正在对null调用Object.assign。您应该在else条件下指定一个空对象: let errObject = Obje
setState()
引起的吗
onSubmit = async (dispatch, e) => {
e.preventDefault();
const { name, email, phone } = this.state;
问题就在这里,但我不明白为什么
出现错误是因为正在对null调用Object.assign。您应该在else条件下指定一个空对象:
let errObject = Object.assign(
name === '' ? { name: 'Name is required' } : {},
email === '' ? { email: 'Email is required' } : {},
phone === '' ? { phone: 'Phone is required' } : {}
);
构造函数中的name、email和phone的初始值是多少?它们的初始值是空字符串。请尽量不要在Object.assign中使用逻辑,并在Wow上查看此方法的官方文档。谢谢它不再抛出错误。但我有一个新问题。如何筛选状态中的姓名、电子邮件或电话。如果提交时它们不是空的,则出错?抱歉,我无法获取您的信息。你能重新表述一下你想说的吗?错误在输入字段下面有条件地呈现。问题是,如果用户在输入中键入内容并提交表单,我希望state.errors.name不再显示。可能会删除处于错误状态的项目。
const updContact = {
name,
email,
phone
};
const { id } = this.props.match.params;
const res = await axios.put(
`https://jsonplaceholder.typicode.com/users/${id}`,
updContact
);
dispatch({ type: 'UPDATE_CONTACT', payload: res.data });
// Clear State
this.setState({
name: '',
email: '',
phone: '',
errors: {}
});
this.props.history.push('/');
};
let errObject = Object.assign(
name === '' ? { name: 'Name is required' } : {},
email === '' ? { email: 'Email is required' } : {},
phone === '' ? { phone: 'Phone is required' } : {}
);