reactjs Uncaught(in promise)TypeError:尝试创建时无法读取未定义的属性(阅读“id”)

4dc9hkyq  于 2023-05-22  发布在  React
关注(0)|答案(1)|浏览(213)

我正在做一个公开的祈祷日志,你也可以在里面添加你最喜欢的圣经经文,一堆一堆。每当我试图添加一个祈祷(或诗句),我得到这个错误:“caught(in promise)TypeError:无法读取undefined的属性(阅读'id')"。

useEffect(() => {
    getPrayers().then(setPrayer);
    if (object.id) setFormInput(object);
  }, [object]);

  const handleChange = (e) => {
    const { name, value } = e.target;
    setFormInput((prevState) => ({
      ...prevState,
      [name]: value,
    }));
  };

  const handleSubmit = (e) => {
    e.preventDefault();
    if (object.id) {
      updatePrayer(formInput, object.id)
        .then(() => router.push('/prayers'));
    } else {
      const payload = { ...formInput };
      createPrayer(payload).then(setFormInput(initialState));
    }
  };

我尝试将www.example.com更改user.id为user.uid,并将uid更改为user

const createPrayer = (prayerObj, user) => new Promise((resolve, reject) => {
  const prayer = {
    content: prayerObj.content,
    publication_date: prayerObj.pub_date,
    uid: user.id,
  };
  fetch(`${dbUrl}/prayers`, {
    method: 'POST',
    body: JSON.stringify(prayer),
    headers: {
      'Content-Type': 'application/json',
    },
  })
    .then((response) => resolve(response.json()))
    .catch((error) => reject(error));
});
k5ifujac

k5ifujac1#

最好是显示错误的来源,但是我假设它是这个函数:

const createPrayer = (prayerObj, user) => new Promise((resolve, reject) => {
  const prayer = {
    content: prayerObj.content,
    publication_date: prayerObj.pub_date,
    uid: user.id,
  };
  fetch(`${dbUrl}/prayers`, {
    method: 'POST',
    body: JSON.stringify(prayer),
    headers: {
      'Content-Type': 'application/json',
    },
  })
    .then((response) => resolve(response.json()))
    .catch((error) => reject(error));
});

这里你设置uid: user.id,user是函数的参数,但这里没有提供createPrayer(payload).then(setFormInput(initialState));
因此user是undefined,这是你的错误。
更详细地介绍一下,以便您下次了解错误(这是相当常见的)
TypeError:尝试创建时无法读取未定义的属性(阅读“property”)
js中的对象是{}。你放在对象内部的任何东西都是一个属性,所以:

const obj = {
  property: "value"
}

所以错误不能读取未定义的属性(阅读属性)是说obj没有定义,所以我不能得到属性的值。

相关问题