当前位置: 首页 > 面试题库 >

多个侦听器上的单个处理程序对反应

尉迟高澹
2023-03-14
问题内容

试图使用es6在没有多个处理程序的情况下创建动态状态,但我陷入了困境。我不知道下面的代码有什么问题

<div className="row-wrap">
    <span>Mon</span>
    <input name="1_min" onChange={this.handleAdvancePrice} type="text" />
    <input name="1_max" onChange={this.handleAdvancePrice} type="text" />
</div>
<div className="row-wrap">
    <span>Tue</span>
    <input name="2_min" onChange={this.handleAdvancePrice} type="text" />
    <input name="2_max" onChange={this.handleAdvancePrice} type="text" />
</div>

<button onClick={this.showStates}></button>

..
..

handleAdvancePrice = (e) => {

    let dow = e.target.name.split('_')[0],
    type = e.target.name.split('_')[1],
    value = +(e.target.value);

    console.log(dow, type) // it print correctly

    this.setState = ({
        [`advancePrice_${dow}_${type}`]: value
    })
}

showStates = () => {
    console.log(this.state) //error this.setState is not a function, caused by handleAdvancePrice
}

我检查了我的其他函数,handleAdvancePrice是罪魁祸首,但是出了什么问题?


问题答案:

罪魁祸首是=后面的多余迹象this.setState。另外,也不需要使用type and dow单独的;
y,因为您可以直接使用e.target.name

class  App extends React.Component {

constructor() {

  super();

  this.state = {}

}



handleAdvancePrice = (e) => {



    let dow = e.target.name;

    let value = e.target.value;



    this.setState ({

        [`advancePrice_${dow}`]: value

    })

}



showStates = () => {

    console.log(this.state) //error this.setState is not a function, caused by handleAdvancePrice

}



render() {



return (

<div>

<div className="row-wrap">

    <span>Mon</span>

    <input name="1_min" onChange={this.handleAdvancePrice} type="text" />

    <input name="1_max" onChange={this.handleAdvancePrice} type="text" />

</div>

<div className="row-wrap">

    <span>Tue</span>

    <input name="2_min" onChange={this.handleAdvancePrice} type="text" />

    <input name="2_max" onChange={this.handleAdvancePrice} type="text" />

</div>



<button onClick={this.showStates}>Show</button>

</div>

)

}

}

ReactDOM.render(<App/>, document.getElementById('app'));


<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

<div id="app"></div>


 类似资料:
  • 服务器部件: 客户部分:io.js 消息组件 信息形式——发布过程的开始

  • 我是JComboBox的新手 我有4个JComboBox:专用、etudiant、annee和semestre。 每次更改所选项目并将结果添加到滚动窗格(groupe des matieres ouvertes)时,我都需要从其中的4个项目中获取所选项目

  • 问题内容: 是否可以创建具有相同路由和相同中间件的,同时侦听HTTP和HTTPS的Express服务器? 目前,我在高速上的HTTP做到这一点,有安全通道隧道HTTPS来表达,但我更喜欢一个纯粹的节点解决方案。 我可以使用以下代码来做到这一点,但是可以使用标记为私有的方法: 问题答案: 您可以通过以下方式共享实现:

  • 我想知道如何在一个键事件中按下所有的键。例如,我想为Ctrl+F编写一个监听器,它可以切换全屏。如何检查在一个事件中是否同时按下了Ctrl和F?

  • 我能否向社区咨询一下,听多个主题的最佳方式是什么,每个主题都包含一个不同类别的信息? 在过去的几天里,我一直在玩Spring Kafka。到目前为止我的思考过程:

  • 我对Spring批处理和Spring一般都是新手。我正在开发一个将在WebSphere Application Server上运行的批处理作业。到目前为止,我只是用一些假的台阶搭建了一个骷髅。我还有一个监听器,用于在作业结束时更新一些Oracle DB表。以下是我的AppContext的一部分: 下面是afterJob代码段的开头: 奇怪的是,在我的一些测试运行中(Rational Applica