繁体   English   中英

反应:改变 state onMouseOver

[英]React: changing state onMouseOver

我试图在悬停元素(图标)时更改背景图像 state 但我总是收到错误“TypeError:无法读取未定义的属性“图标””,这很奇怪,因为图标工作正常,直到我hover吧。

很高兴有人能提供帮助。

状态:

this.state = {
      images: {
        header: "path to img",
        icon: "path to icon"
      }
}

方法:

 handleMouseOver = () => {
    this.setState({
      images: {
        header: "new img"
      }
    });
  };

Header组件接收镜像:

<Header bgImg={this.state.images.header} />

悬停元素:

<div>
   <img onMouseOver={this.handleMouseOver} src={this.state.images.icon} />
</div>

此问题来自您的onMouseOver function,它为 state 设置了一个新值,但从图像 object 中删除了图标。 您需要运行以下命令:

 handleMouseOver = () => {
    this.setState((state, props) => {
      return {
         images: {
           header: "new img",
           icon: state.images.icon
         }
      };
    });
  };

这是因为当您设置images时,您会丢失icon state。 试试这样:

handleMouseOver = () => {
  this.setState(prevState => ({
    images: {
      ...prevState.images,
      header: "new img"
    }
  }));
};

您通过传播旧图像使用旧images ,然后更新必要的属性。 为什么我们使用setState回调和prevState 因为当我们设置新的 state 时,我们依赖于旧的 state。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM