【发布时间】:2020-04-09 19:02:10
【问题描述】:
重定向发生在 REACT { Link } 上的 onClick() 之前
你好。我整天都在尝试播放声音 onClick Button Event。当我删除链接(URL)时它可以工作,但是通过链接,页面会转到新的 URL 而不会触发 onClick 事件。 我已经尝试过这样的:onClick={() => this.playAudioHandler}。 如果有人可以修复我的代码以便在转到新 URL 之前触发“playAudioHandler”,我真的很感激。
这是我的实际代码:
import React, { Component } from "react";
import { Link } from "react-router-dom";
import classes from "./Button.module.css";
import clickSound from "../assets/click.mp3";
class Button extends Component {
playAudioHandler = (event) => {
const audioEl = document.getElementsByClassName("audio-element")[0];
audioEl.play();
// event.preventDefault();
};
render() {
return (
<>
<audio className="audio-element">
<source src={clickSound}></source>
</audio>
<Link to={this.props.linkToGo}>
<button
type="submit"
onClick={this.playAudioHandler}
className={[classes.Button, classes[this.props.btnType]].join(" ")}
// join() to transform the array in a string
>
{this.props.children}
</button>
</Link>
</>
);
}
}
export default Button;
【问题讨论】:
-
为什么有
Link组件包裹按钮?当您单击按钮时,它还会触发链接上的单击事件,从而使页面发生变化。如果只希望按钮播放声音,则不需要 Link 组件。 -
那么你要先播放声音然后换页吗?
-
我不希望按钮只是发出声音。这很容易。我想在单击按钮时更改页面。但我希望在更改 URL 之前执行“playAudioHandler”。这是来自父组件的“props.linkToGo”: