尝试在 React 中更改状态时出现未定义的错误

Posted

技术标签:

【中文标题】尝试在 React 中更改状态时出现未定义的错误【英文标题】:Getting an undefined error when trying to change state in React 【发布时间】:2020-01-16 08:05:12 【问题描述】:

在下面的代码中,我试图通过使用setstate() 来更改变量 i、x、y 和 z,但我不断收到错误消息,指出变量 i、x、y 和 z 是“不明确的。”有人对为什么会发生这种情况有任何建议吗?

state = 
albumArt: [
  title: "Supermodel", image: "AlbumImages/1.jpg",
  title: "A Moment Apart", image: 'AlbumImages/2.jpg',
  title: "Beerbongs and Bentleys", image: 'AlbumImages/3.jpg',
  title: "Another Eternity", image: 'AlbumImages/4.jpg',
  title: "Astroworld", image: 'AlbumImages/5.jpg',
  title: "The Story of Us", image: 'AlbumImages/6.jpg',
  title: "Slow Motion", image: 'AlbumImages/7.jpg',
  title: "Free Spirit", image: 'AlbumImages/8.jpg',
  title: "Birds in the Traps Sing McKnight", image: 'AlbumImages/9.jpg',
  title: "At. Long. Last. A$ap", image: 'AlbumImages/10.jpg'
],

  otherStateI: 0,
  x: 0,
  y: 0,
  z: 0 

randomAlbum = () => 
this.setState(i = Math.floor(Math.Random() * 10));
this.setState(x = Math.floor(Math.Random() * 10));
this.setState(y = Math.floor(Math.Random() * 10));
this.setState(z = Math.floor(Math.Random() * 10)); 

【问题讨论】:

你需要使用this.setState(x : Math.floor(Math.Random() * 10)) 您在this.setState 中有错误。应该像@Code Maniac 所说的那样。有关更多用法,请参阅docs。 它是Math.random() 而不是Math.Random() 【参考方案1】:

对于您的状态,您需要传递 setState 一个带有您要更改的道具/值的对象(或返回该对象的函数)

this.setState( i: Math.floor(Math.random() * 10) );
// ...etc

在您的特定代码中,一次传递它们也会更有意义:

this.setState( 
    i: Math.floor(Math.random() * 10),
    x: Math.floor(Math.random() * 10),
    y: Math.floor(Math.random() * 10),
    z: Math.floor(Math.random() * 10),
);

哦,还有 PS - 是 Math.random() 而不是 Math.Random() - 我已经在这里为你更正了 :)

【讨论】:

以上是关于尝试在 React 中更改状态时出现未定义的错误的主要内容,如果未能解决你的问题,请参考以下文章

在ruby中编译时出现未定义的方法错误

尝试在 SharePoint 环境中使用 AngularJS DateRangePicker 时出现未定义错误

遵循 Shopify 的 React 和 Node 教程时出现未处理的运行时错误

React:使用 API 从 Prisma 获取数据时出现未处理的错误 500

尝试从数据库打印结果时出现未定义的错误

注册时出现未定义的方法错误