javascript - 在 React 事件处理程序中使用参数来操纵特定状态
问题描述
我的状态如下所示:
state={a:0,b:0,c:0}
我正在尝试编写一个 eventHandler 函数来接受参数“值”,这样我就可以将相同的函数作为道具传递给几个按钮,这些按钮将根据提供的参数设置状态。
eventHandler =(value)=>{
this.setState({value:this.state.value+1})
}
<button onClick={this.eventHandler.bind(this,'a')}><button/>
<button onClick={this.eventHandler.bind(this,'b')}><button/>
<button onClick={this.eventHandler.bind(this,'c')}><button/>
这个想法是每个按钮都接受具有不同参数的相同功能,但仅更改参数中传递的状态,而其他按钮保持不变。
如果将此函数作为道具传递给子组件并在那里分配和使用参数,我也会非常感兴趣。
<Parent click = {this.eventHandler.bind(this,'')}/>
|
<button onClick={click('b')}>
它不起作用,我不确定它是正确的方法。我感谢任何帮助和建议。
谢谢!
解决方案
从您的代码中,我认为这就是您想要的。控制台日志只是为了让您可以看到状态的变化。
这里的工作示例。
import React from "react";
import ReactDOM from "react-dom";
class App extends React.Component {
state = {
variables: {
a: 0,
b: 1
}
};
handleClick = val => {
const prevVal = this.state.variables[val];
this.setState(
{ variables: { ...this.state.variables, [val]: prevVal + 1 } },
() => {
console.log(this.state);
}
);
};
render() {
return (
<React.Fragment>
<button onClick={() => this.handleClick("a")}>click a</button>
<button onClick={() => this.handleClick("b")}>click b</button>
</React.Fragment>
);
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
推荐阅读
- java - Android 在应用程序中查看 pdf 风景,无需从 url 下载
- javascript - 如何在 es6 中使用箭头函数而不是 bind 方法
- three.js - 从给定的 3d 点数组中绘制管子
- webpack - 在 Webpack 配置规则中使用 require.resolve 的目的是什么?
- google-drive-api - Google 云端硬盘分析 - 谁下载了什么
- ios - 不使用最新的 Xcode 版本开发 ios App 可以吗?
- ios - 更改 AppDelegate 的根视图控制器导致 UIViewControllerHierarchyInconsistency 异常
- arrays - 谷歌应用程序脚本邮件合并不提取arrayformula结果
- r - 使用 dplyr / data.table 插入新行
- azure - Azure 门户 Web 作业执行时间