Javascript OnClick不工作,但控制台中没有出现错误
当我正在学习React时,我正在创建一个笑话生成器。我创建了一个本地文件,能够提取数据(笑话)并将其显示在浏览器上。现在,我试图创建一个按钮,当你点击时,它会显示一个随机笑话。我可以看到笑话和按钮,但没有触发任何动作。我检查了控制台,没有错误。如果我使用Javascript OnClick不工作,但控制台中没有出现错误,javascript,reactjs,Javascript,Reactjs,当我正在学习React时,我正在创建一个笑话生成器。我创建了一个本地文件,能够提取数据(笑话)并将其显示在浏览器上。现在,我试图创建一个按钮,当你点击时,它会显示一个随机笑话。我可以看到笑话和按钮,但没有触发任何动作。我检查了控制台,没有错误。如果我使用onClick={randomJoke},那么我会得到一个错误,说侦听器需要的是函数,而不是对象。有人能帮我指出问题所在吗 这是我目前的设置方式: import React from 'react' import SportsJokesData
onClick={randomJoke}
,那么我会得到一个错误,说侦听器需要的是函数,而不是对象。有人能帮我指出问题所在吗
这是我目前的设置方式:
import React from 'react'
import SportsJokesData from './SportsJokesData';
class SportsJokesApi extends React.Component {
constructor(props){
super(props);
this.getRandomJoke = this.getRandomJoke.bind(this);
}
getRandomJoke(){
return SportsJokesData[(SportsJokesData.length * Math.random()) << 0]
}
render() {
const randomJoke = this.getRandomJoke()
return (
<React.Fragment>
<p> {randomJoke.question}</p>
<p>{randomJoke.answer}</p>
<button onClick={this.getRandomJoke}>
click here
</button>
</React.Fragment>
)
}
}
export default SportsJokesApi;
从“React”导入React
从“/SportsJokesData”导入SportsJokesData;
类sportsJokeAPI扩展了React.Component{
建造师(道具){
超级(道具);
this.getRandomJoke=this.getRandomJoke.bind(this);
}
GetRandom笑话(){
返回SportsJokesData[(SportsJokesData.length*Math.random())您不能只在onClick
事件上返回一个新组件。您需要先设置一些状态。本指南非常有用:当出现新笑话时,您需要重新渲染您的React组件。要执行此操作,请将随机笑话
存储在React组件的状态中
调用this.getRandom笑话
时,应同时更新状态
,以便触发React组件的重新呈现。发生这种情况时,UI将使用Random笑话
的最新值进行更新
从“React”导入React
从“/SportsJokesData”导入SportsJokesData;
常量初始状态={
随机笑话:空
};
类sportsJokeAPI扩展了React.Component{
建造师(道具){
超级(道具);
this.getRandomJoke=this.getRandomJoke.bind(this);
this.state=初始状态;
}
GetRandom笑话(){
这是我的国家({
randomJoke:SportsJokesData[(SportsJokesData.length*Math.random())
import React from 'react'
import SportsJokesData from './SportsJokesData';
class SportsJokesApi extends React.Component {
getRandomJoke(){
return SportsJokesData[(SportsJokesData.length * Math.random()) << 0]
}
render() {
const randomJoke = this.getRandomJoke()
return (
<React.Fragment>
<p>{randomJoke.question}</p>
<h1>{randomJoke.answer}</h1>
</React.Fragment>
)
}
}
export default SportsJokesApi;