单击事件的不同操作
Different action for a click event
所以我有一个函数绑定到我的按钮,应该在每次点击执行不同的动作;返回值将在另一个getter中使用,我将在render中调用它,因此我无法在这种情况下使用setState。
class awesomeFruits extends React.Component {
... constructor stuff etc
clickSomething () {
let fruit = 'banana'
let clickThing = 1
clickThing++
// please notice that I only need 3 actions
if (clickThing === 1) {
fruit = 'apple'
} else if (clickThing === 2) {
fruit = 'grape'
} else {
fruit = 'pineapple'
clickThing = 1 // reset click
}
return fruit
}
get fruitOfChoice () {
... non related stuff
this.clickSomething()
}
}
然后在渲染函数中:
render () {
return <button onClick={this.clickSomething.bind(this)}>CLICK FRUIT</button>
<p>this.fruitOfChoice</p>
}
我正在学习React和JS一起,所以我不确定它是否主要是一个React问题。与香草JS我能够通过声明clickThing
为零作为一个全局变量使其工作,但我不知道如何用React正确地做到这一点。
让问题更精确:我怎样才能在每次点击上有不同的动作,用我想要的结果更新渲染?
感谢任何反馈,即使我必须重新制作以上所有
问题在clickSomething
的声明中。每次执行时,它都会将clickThing
重置为1。正如您在问题中指出的那样,您需要将clickThing的初始声明移到函数执行之外。我是这样做的:
class awesomeFruits {
constructor() {
this.fruits = ['banana', 'grape', 'pineapple'];
this.clickThing = -1; // Starting this out at -1 so the first execution increments it to 0, and it hits the first index of your fruits array;
}
clickSomething () {
if(this.clickThing === (this.fruits.length - 1)) {
this.clickThing = 0;
} else {
this.clickThing++;
}
return this.fruits[this.clickThing];
}
}
const fruitPicker = new awesomeFruits;
document.getElementById('testMe').addEventListener('click',() => {
console.log(fruitPicker.clickSomething());
})
<button id="testMe">Pick a fruit</button>
将水果名称放入数组中更简洁,并且允许您稍后用最少的代码添加更多。
最后,它可能不是你想要的,但是如果你想输出一个随机的水果,this.clickThing = Math.round(Math.random() * fruits.length-1)
会给你一个随机数,不超过水果数组的最高索引。
在任何HTML标签中都要将js代码包含在{}中。即
<p> {this.fruitOfChoice } </p>
在getFruitOfChoice中,您需要返回一个值,因为这是您最终调用的函数。
return this.clickSomething()
相关文章:
- toogleClass函数来切换元素类并在事件期间执行某些操作
- 禁用先前单击按钮时的单击事件操作
- reactJs redux:如何对用户事件调度操作并将操作与化简器和存储链接
- 如何在执行某个操作后自动触发回车键事件
- 在悬停事件中创建一次性操作
- 将单击事件附加到按钮或链接上的类,该按钮或链接会触发 AJAX 帖子,然后延迟并继续原始操作
- MVC 下拉列表更改事件未正确调用控制器中的操作
- 如何在Javascript事件上触发rails控制器操作
- 如何使用 JavaScript 操作 html 按钮元素的“onclick”事件
- 如何删除绑定到单击事件的任何jQuery操作
- 如何在jquery可丢弃事件中执行某些操作
- html+jquery(绑定onclick事件以执行onclick之前的操作)
- 处理Ember中操作中的事件绑定和回调
- 如何使用body onload事件操作HTML音频标记和JavaScript函数
- 仅针对左滑动/右滑动事件阻止默认操作
- 在javascript中阻止文档执行默认操作时,在单个元素中使用默认事件
- 重命名连接名称并添加 JSF 操作事件
- 如何在滑块操作事件之前获取滑块的值
- 创建DOM后的Jquery操作事件不起作用
- 在jquery中循环操作/事件