解决react不能往setState中传key作为参数的办法(文章最后实现了传递key做参数的办法)
-----------------------html-------------------
<button onClick = {this.handleClick.bind( this, false )}>我能改变属性值为false</button> //这时候可以往里面传入值,然后也可以实现复用,而且函数都时对特定对象的操作,功能更加单一
[] 写法,而不能使用“点”语法访问import React from 'react';
import HeaderCom_son from './header_1.js'; export default class HeaderCom extends React.Component {
constructor(props) {
super(props)
this.state = {
visibleA: false,
visibleB: false,
visibleC: false,
}
}
handleClick(key) {
this.setState((prevS,props)=>({
[key]: !prevS[key]
}));
}
render() {
return (
<div>
<div >visibleA-----{this.state.visibleA.toString()}</div>
<div >visibleB-----{this.state.visibleB.toString()}</div>
<div >visibleC-----{this.state.visibleC.toString()}</div>
<button onClick={this.handleClick.bind(this, "visibleA")}>我会执行this.handleClick.bind(this, "visibleA")</button>
<button onClick={this.handleClick.bind(this, "visibleB")}>我会执行this.handleClick.bind(this, "visibleB")</button>
<button onClick={this.handleClick.bind(this, "visibleC")}>我会执行this.handleClick.bind(this, "visibleC")</button>
</div>
);
}
}
页面如下图:

点击三个按钮分别都会改变对应的状态值;
实现仅仅需要一个方法,就可以改变所有状态的true / false 的切换
其实再思考以下,我们可以再添加一个参数,
<button onClick={this.handleClick.bind(this, "visibleA", "需要传递的值")}>
从而实现:一个方法,修改所有状态的属性,和所有值
到这里就很简单了,我就不再写了!
解决react不能往setState中传key作为参数的办法(文章最后实现了传递key做参数的办法)的更多相关文章
- react的this.setState中的坑
react的this.setState中的有两个. 1.this.setState异步的,不能用同步的思维讨论问题 2.在进行组件通讯的回调的时候,this指向子组件,没有指向父亲这,怎么办呢.在 c ...
- java微信授权登录传参给redirect_uri 接口,回到原页面,传递多个参数
本文背景: 调用微信的授权登录的时候,我们第一步是需要获取用户同意授权的code,这里面有一个redirect_uri参数,当用户同意授权之后,就会回调访问这个redirect_uri,通常这redi ...
- [React技术内幕] setState的秘密
对于大多数的React开发者,setState可能是最常用的API之一.React作为View层,通过改变data从而引发UI的更新.React不像Vue这种MVVM库,直接修改data并不能视图的改 ...
- angular封装七牛云图片上传,解决同一页面多个上传按钮分别上传
step1:引入文件 引入Plupload *该SDK上传功能集于Plupload插件封装,所以需要下载Plupload; plupload.dev.js 引入qiniu.js为了简便,当时直接从官网 ...
- react事件绑定,事件传参,input单向数据绑定
import React, { Component } from 'react'; class New extends Component { constructor(props){ super(pr ...
- react 关于this.setState使用时,第一次无法获取数据,第二次获取的数据是第一次触发的疑问
我使用的是antd组件, compareClickFn(orderCodes, fileNames) { printLog("orderCodes----------"+ orde ...
- React技巧之组件中返回多个元素
原文链接:https://bobbyhadz.com/blog/react-return-multiple-elements 作者:Borislav Hadzhiev 正文从这开始~ fragment ...
- MVC使用ajax异步刷新时怎样输出从后台中传过来的JSON数据
前言 这几天在学习MVC使用AJAX异步刷,因为是新手.所以在js中传参数到后台以及后台返回数据到前台怎么接受,怎么前台遍历出JSON数据都开始不知道,相信新手在使用时跟我一样会遇到,这里我就和大家分 ...
- 解决上一篇jquery中on的疑惑
内容都是来自:http://www.365mini.com/page/jquery-on.htm.这里做一下收藏.文章的最后 疑问和解答可以解决所有的疑惑 看了之后能更好的整篇文章. on()函数 ...
随机推荐
- 队列的理解和实现(一) ----- 循环队列(java实现)
什么是队列 我们都知道栈是先进后出的一种线性表,与之相反的是,队列是一种先进先出的线性表.它只允许在表的一端进行插入,而在另一端进行删除.举个例子来说,在生活中我们买东西需要进行排队,最先排队的可以最 ...
- 采用prometheus 监控mysql
1. prometheus 是什么 开源的系统监控和报警工具,监控项目的流量.内存量.负载量等实时数据. 它通过直接或短时jobs中介收集监控数据,在本地存储所有收集到的数据,并且通过定义好的rule ...
- QuantLib 金融计算——基本组件之 DateGeneration 类
目录 QuantLib 金融计算--基本组件之 DateGeneration 类 QuantLib 金融计算--基本组件之 DateGeneration 类 许多产品的估值依赖于对未来现金流的分析,因 ...
- word中手动添加endnote的加载项
用Endnote管理文献,在写作的同时插入引文,这对于写文章的朋友们来说太重要了.我今天遇到这个问题,花时间钻研了,觉得应该记录下来,相信也会方便大家.查了网上许多帖子依然不得解,可能是Word版本变 ...
- 使用Vue写一个登陆页面并在管理页面查看和修改
注册页面代码如下html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- Codeforces Round #555 (Div. 3) A B C1(很水的题目)
A. Reachable Numbers 题意:设f(x)为 x+1 这个数去掉后缀0的数,现在给出n,问经过无数次这种变换后,最多能得到多少个不同的数. 代码 #include<cstdio& ...
- 在微信移动端input file拍照或从相册选择照片后会自动刷新页面退回到一开始网站进入的页面
<input type="file" accept="image/*"/> 调用打开摄像头后,聚焦后拍照,点击确认,这时页面会出现刷新动作,然后回退 ...
- mongodb启动失败:child process failed, exited with error number 100
参考 http://www.dataguru.cn/thread-107361-1-1.html 里面的路径 根据自己的--dbpath的路径 和l--logpath路径去找
- CentOS7服务管理(重启,停止,自动启动命令)
我们对service和chkconfig两个命令都不陌生,systemctl 是管制服务的主要工具, 它整合了chkconfig 与 service功能于一体. systemctl is-enable ...
- try catch finall 结构里的 return
public class ExceptionDemo1 { public static void main(String[] args) { try { ; /b; System.out.printl ...