亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我在 React 中映射已創建的數組時遇到問題,并且正在嘗試傳播它(但無濟于事)

我在 React 中映射已創建的數組時遇到問題,并且正在嘗試傳播它(但無濟于事)

嚕嚕噠 2022-09-16 20:54:21
我在這里設置了一個系統,單擊保存按鈕抓取一個div并制作一個可用的圖像文件。我知道這是有效的,因為我已經讓它與單個圖像一起工作。我現在已將其設置為與同一圖像的多個圖像一起使用,但我似乎無法讓它映射任何內容。我一直在閱讀有關傳播的文章,我正在嘗試這樣做,但它仍然不適合我。我以前遇到過這種掙扎,如果有人能解釋為什么這不起作用,我會很高興。我正在使用反應鉤子。我也知道狀態正在更新,據我所知是正確的。我大約99%確定問題出在映射中。import React, { useState } from "react";import "./Favorites.css";import htmlToImage from "html-to-image";import FileBase64 from "react-file-base64";function Favorites(props) {  const [files, setfiles] = useState([]);  const newspreadarray = [...files];  const getimage = () => {    var htmlToImage = require("html-to-image");    var node = document.getElementById("mymodal153");    htmlToImage      .toPng(document.getElementById("mymodal153"), { quality: 0.01 })      .then(function (dataUrl) {        var img = new Image();        img.src = dataUrl;        console.log(dataUrl);        let newarray = files;        newarray.push(dataUrl);        console.log(newarray);        setfiles(newarray);      })      .catch(function (error) {        console.error("oops, something went wrong!", error);      });  };  return (    <div>      <span onClick={getimage} className="minize close">        save &minus;      </span>      <div className="imageholder">        <div id="mymodal153">          <img src="https://i.imgur.com/LFXgB63.png" class="dinoimage" />          <h1>Cool</h1>          <p>hi this is some example text</p>        </div>        <div id="imageplacer"></div>        {newspreadarray.map((post, index) => (          //we can fiddle with sizes here :)          <img src={post} key={index} />        ))}      </div>    </div>  );}export default Favorites;
查看完整描述

1 回答

?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

問題是你正在改變狀態。


.then(function (dataUrl) {

    var img = new Image();

    img.src = dataUrl;

    console.log(dataUrl);

    let newarray = files; // <-- reference to state

    newarray.push(dataUrl); // <-- mutation

    console.log(newarray); // <-- save same reference back to state

    setfiles(newarray);

})

或更簡潔


setfiles([...files, dataUrl]);

您應該創建一個新的數組引用


.then(function (dataUrl) {

    var img = new Image();

    img.src = dataUrl;

    console.log(dataUrl);

    const newarray = [...files]; // <-- spread existing state into new array

    newarray.push(dataUrl); // <-- append new element

    console.log(newarray);

    setfiles([...files, dataUrl]); // <-- save new reference to state

  })

這也是一條非常無用的線


const newspreadarray = [...files];

您可以簡單地


{files.map((post, index) => (

  //we can fiddle with sizes here :)

  <img src={post} key={index} />

))}


查看完整回答
反對 回復 2022-09-16
  • 1 回答
  • 0 關注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號