为什么会一直运行这个函数?

发布于 2022-09-13 00:44:52 字数 428 浏览 14 评论 0

组件中是这样的:

<Tag color={this.getTagColor()}>{item.roleName}</Tag>

函数是这样的:

getTagColor = () => {
        const colors = ['magenta', 'volcano', 'gold', 'green', 'blue', 'cyan'];
        const index = Math.floor(colors.length * Math.random());
        return colors[index];
    }

运行以后color的值会不停地变化 像是一值在运行这个函数

我希望的是运行一次就行了

如何解决呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

別甾虛僞 2022-09-20 00:44:52

你应该把这个方法的执行放在组件render之前,也就是componentWillMount里面,然后用state存起来

state = {
  tagColor: ""
};

componentWillMount(){
  setState({
      tagColor: this.getTagColor()
  })
}

render(){
  return <Tag color={tagColor}></Tag>
}

你这里一直执行是因为,在render的时候调用了getTagColor方法,然后改变了color,react检测到值改变了又会继续render,然后就无限循环了,像这种固定的值在组件渲染之间就可以先请求然后存起来用的

后eg是否自 2022-09-20 00:44:52
render(){
  const tagColor=this.getTagColor();
  return <Tag color={tagColor}></Tag>
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文