React 中 setState({key:value}),key是一个变量时,react会直接把它当作字符串

React 中 setState({key:value}),key是一个变量时,react会直接把它当作字符串

开始一直没发现问题所在,打印this.state.key发现值也是对的,后来发现是react直接把它当作字符串了

import React, { Component } from 'react';
import { Button } from 'antd';


class Demo extends Component {
    constructor(props) {
      super(props);
      this.fn = this.fn.bind(this);
    }
    fn(key,value){
      this.setState({
        key:value
      },()=>{
        console.log(this.state.key);
      })
    }
   render() {
    return (
      <div>
        <Button onClick={() => this.fn('width','100px')}>设置宽度</Button>
        <Button onClick={() => this.fn('height','100px')}>设置高度</Button>
      </div>
    );
  }
}

export default Demo

其实我打印的时候也犯了错,不然会更快找出bug,这里我打印的this.state.key,然鹅key作为变量应该是这么写this.state[key],这样打印出来的应该是undefined,会发现React将变量key作为字符串了
在这里插入图片描述
然后我连蒙带猜的,这样写this.setState({[key]:value})

fn(key,value){
      this.setState({
        [key]:value
      },()=>{
        console.log(this.state);
      })
    }

在这里插入图片描述
蒙对了,解决~

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值