Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我收到一个TypeError:使用object.assign时无法将未定义或null转换为object_Javascript_Reactjs - Fatal编程技术网

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' } : {}
  );