react img 被自动转成base64,无法根据当前路径来动态改变值的解决办法

项目需求,需要根据当前的图片的路径值的来(加或者减)动态改变其值: state定义如下:

 

this.state={
            basket01:0+require("../../img/egg/egg1_00.png"),
            basket02:0+require('../../img/egg/egg2_00.png'),
            basket03:0+require('../../img/egg/egg3_00.png'),
            basket04:0+require('../../img/egg/egg4_00.png'),
        }  

 

 重点就是前面的数值:

 

render 代码如下:

<img className="egg-pen" src={this.state.basket01.substring(1,this.state.basket01.length)} alt=""/>

  

计算操作的方法代码为:

add (index){
        let basket01Num = this.state.basket01.substring(0,1)
        let basket02Num = this.state.basket02.substring(0,1)
        let basket03Num = this.state.basket03.substring(0,1)
        let basket04Num = this.state.basket04.substring(0,1)
        let eggSum = this.state.eggSum
        this.setState({
            eggSum:--eggSum
        })
        if(index === 1){
            ++basket01Num
            this.setState({
                basket01:basket01Num+require(`../../img/egg/egg1_0${basket01Num}.png`)
            })
        }else if(index === 2){
            ++basket02Num
            this.setState({
                basket02:basket02Num+require(`../../img/egg/egg2_0${basket02Num}.png`)
            })
        }else if(index === 3){
            ++basket03Num
            this.setState({
                basket03:basket03Num+require(`../../img/egg/egg3_0${basket03Num}.png`)
            })
        }else{
            ++basket04Num
            this.setState({
                basket04:basket04Num+require(`../../img/egg/egg4_0${basket04Num}.png`)
            })

        }
    }

  

项目实现的效果:

 

 通过加减来改变图片里面的鸡蛋数量

转载于:https://www.cnblogs.com/keleyz/p/9722014.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React中将图片转换为Base64格式有多种方法,以下是其中两种常用的方法: 方法一:使用FileReader对象 ```javascript // 创建一个input[file]元素 const inputElement = document.createElement("input"); inputElement.type = "file"; // 监听文件选择事件 inputElement.addEventListener("change", (event) => { const file = event.target.files[0]; const reader = new FileReader(); // 读取文件内容并转换为Base64格式 reader.onloadend = () => { const base64String = reader.result; console.log(base64String); }; reader.readAsDataURL(file); }); // 触发文件选择事件 inputElement.click(); ``` 方法二:使用canvas元素 ```javascript // 创建一个input[file]元素 const inputElement = document.createElement("input"); inputElement.type = "file"; // 监听文件选择事件 inputElement.addEventListener("change", (event) => { const file = event.target.files[0]; const image = new Image(); // 读取文件内容并绘制到canvas上 const reader = new FileReader(); reader.onloadend = () => { image.src = reader.result; }; reader.readAsDataURL(file); // 等待图片加载完成后获取Base64格式的图片数据 image.onload = () => { const canvas = document.createElement("canvas"); canvas.width = image.width; canvas.height = image.height; const context = canvas.getContext("2d"); context.drawImage(image, 0, 0); const base64String = canvas.toDataURL("image/png"); console.log(base64String); }; }); // 触发文件选择事件 inputElement.click(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值