Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 使用React钩子在React js中预览上载的图像_Reactjs_React Hooks - Fatal编程技术网

Reactjs 使用React钩子在React js中预览上载的图像

Reactjs 使用React钩子在React js中预览上载的图像,reactjs,react-hooks,Reactjs,React Hooks,使用React hooks,通过选择文件输入上传图像后,如何在previewProfilePic>img区域预览图像 import React, { useState } from "react"; const Register = () => { const [picture, setPicture] = useState(null); const onChangePicture = e => { console.log('picture: ', pictu

使用React hooks,通过选择文件输入上传图像后,如何在previewProfilePic>img区域预览图像

import React, { useState } from "react";

  const Register = () => {
  const [picture, setPicture] = useState(null);

  const onChangePicture = e => {
    console.log('picture: ', picture);
    setPicture(e.target.files[0]);
};
  return (
    <div className="register_wrapper">
      <div className="register_player_column_layout_one">
        <div className="register_player_Twocolumn_layout_two">
          <form className="myForm">
            <div className="formInstructionsDiv formElement">
              <h2 className="formTitle" >Sign Up</h2>
              <p className="instructionsText"></p>
              <div className="register_profile_image">
                 <input id="profilePic" type="file" onChange={onChangePicture}/>
              </div>
              <div className="previewProfilePic" >
                <img className="playerProfilePic_home_tile"  src=""></img>
              </div>
            </div>
            <div className="fillContentDiv formElement">
              <div className="names formContentElement">
                <input className="inputRequest " type="text" placeholder="First Name" />
                <input className="inputRequest " type="text" placeholder="Last Name" />
              </div>
            </div>
            <div className="submitButtonDiv formElement">
              <button className="submitButton">Register</button>
            </div>
          </form>
        </div>
      </div>
    </div>
  );
}

export default Register;

我还没有对此进行测试,但是,您需要做的是通过执行以下操作将文件转换为URL=>URL.createObjectURLevent.target.files[0]


我还没有对此进行测试,但是,您需要做的是通过执行以下操作将文件转换为URL=>URL.createObjectURLevent.target.files[0]


为了查看预览,您需要读取图像并使用base64格式数据设置状态,这些数据是您接收的,并作为图像标记的源进行渲染

要读取文件数据,可以使用FileReader


为了查看预览,您需要读取图像并使用base64格式数据设置状态,这些数据是您接收的,并作为图像标记的源进行渲染

要读取文件数据,可以使用FileReader

createObjectURL静态方法创建一个DOMString,其中包含表示参数中给定对象的URL。URL生存期绑定到创建URL的窗口中的文档。新对象URL表示指定的文件对象或Blob对象

createObjectURL静态方法创建一个DOMString,其中包含表示参数中给定对象的URL。URL生存期绑定到创建URL的窗口中的文档。新对象URL表示指定的文件对象或Blob对象

这很简单。 要编写的代码要少得多:

一个非常简单的例子是:

从React导入React; 从@rpldy/Uploady导入上传; 从@rpldy/上传按钮导入上传按钮; 从@rpldy/上传预览导入上传预览; 导出常量应用==> ; 这很简单。 要编写的代码要少得多:

一个非常简单的例子是:

从React导入React; 从@rpldy/Uploady导入上传; 从@rpldy/上传按钮导入上传按钮; 从@rpldy/上传预览导入上传预览; 导出常量应用==>
;谢谢你,现在它上传的文件,但我可以看到一个错误,首先你上传的图像,图像显示成功-这是好的。现在,您再次单击“选择文件”,但决定不选择新图像并单击“取消”。。异常引发类型错误:未能在“URL”上执行“createObjectURL”:未找到与提供的签名匹配的函数。onChangePicture C:/Project1/src/components/Register.js:10 7 | const onChangePicture=e=>{8 | console.log'picture:',picture;>10 | setPictureURL.createObjectURLe.target.files[0];我试图解决您的主要问题,如何预览图像。错误消息清楚地表明您应该向代码中添加什么。谢谢,现在它正在上载文件,但我看到一个错误,首先您上载图像,图像显示成功-这很好。现在您再次单击“选择文件”,但决定不选择新图像,然后单击“可以”cel..异常引发TypeError:未能对“URL”执行“createObjectURL”:未找到与提供的签名匹配的函数。onChangePicture C:/Project1/src/components/Register.js:10 7 | const onChangePicture=e=>{8 | console.log'picture:',picture;>10 | setPictureURL.createObjectURLe.target.files[0];我试图解决你的主要问题,如何预览图像。错误消息清楚地表明你应该向代码中添加什么。谢谢你,伙计,但我遇到了一个错误。第一次上传看起来不错,尝试第二次上传,但不选择文件,即单击“取消”时出现异常。@soccerway我更新了答案。你需要检查t存在e.target.files[0]谢谢,伙计,但我遇到了一个错误。.第一次上载看起来不错,请尝试第二次上载,不要选择文件,即单击“取消”,出现异常。@soccerway我更新了答案。您需要检查是否存在e.target.files[0]
import React, { useState } from "react";

const Register = () => {
  const [picture, setPicture] = useState('');

  const onChangePicture = e => {
    console.log('picture: ', picture);
    setPicture(URL.createObjectURL(e.target.files[0]));
  };

  return (
    <div className="register_wrapper">
      <div className="register_player_column_layout_one">
        <div className="register_player_Twocolumn_layout_two">
          <form className="myForm">
            <div className="formInstructionsDiv formElement">
              <h2 className="formTitle" >Sign Up</h2>
              <p className="instructionsText"></p>
              <div className="register_profile_image">
                 <input id="profilePic" type="file" onChange={onChangePicture}/>
              </div>
              <div className="previewProfilePic" >
                <img className="playerProfilePic_home_tile"  src={picture}></img>
              </div>
            </div>
            <div className="fillContentDiv formElement">
              <div className="names formContentElement">
                <input className="inputRequest " type="text" placeholder="First Name" />
                <input className="inputRequest " type="text" placeholder="Last Name" />
              </div>
            </div>
            <div className="submitButtonDiv formElement">
              <button className="submitButton">Register</button>
            </div>
          </form>
        </div>
      </div>
    </div>
  );
}

export default Register;
export default () => {
  const [picture, setPicture] = useState(null);
  const [imgData, setImgData] = useState(null);
  const onChangePicture = e => {
    if (e.target.files[0]) {
      console.log("picture: ", e.target.files);
      setPicture(e.target.files[0]);
      const reader = new FileReader();
      reader.addEventListener("load", () => {
        setImgData(reader.result);
      });
      reader.readAsDataURL(e.target.files[0]);
    }
  };
  return (
    <div className="register_wrapper">
      <div className="register_player_column_layout_one">
        <div className="register_player_Twocolumn_layout_two">
          <form className="myForm">
            <div className="formInstructionsDiv formElement">
              <h2 className="formTitle">Sign Up</h2>
              <p className="instructionsText" />
              <div className="register_profile_image">
                <input id="profilePic" type="file" onChange={onChangePicture} />
              </div>
              <div className="previewProfilePic">
                <img className="playerProfilePic_home_tile" src={imgData} />
              </div>
            </div>
            <div className="fillContentDiv formElement">
              <div className="names formContentElement">
                <input
                  className="inputRequest "
                  type="text"
                  placeholder="First Name"
                />
                <input
                  className="inputRequest "
                  type="text"
                  placeholder="Last Name"
                />
              </div>
            </div>
            <div className="submitButtonDiv formElement">
              <button className="submitButton">Register</button>
            </div>
          </form>
        </div>
      </div>
    </div>
  );
};
import React, { useState } from "react";

  const Register = () => {
  const [picture, setPicture] = useState(null);

  const onChangePicture = e => {
    setPicture(URL.createObjectURL(e.target.files[0]) );
};
  return (
    <div className="register_wrapper">
      <div className="register_player_column_layout_one">
        <div className="register_player_Twocolumn_layout_two">
          <form className="myForm">
            <div className="formInstructionsDiv formElement">
              <h2 className="formTitle" >Sign Up</h2>
              <p className="instructionsText"></p>
              <div className="register_profile_image">
                 <input id="profilePic" type="file" onChange={onChangePicture}/>
              </div>
              <div className="previewProfilePic" >
                <img className="playerProfilePic_home_tile"  src={picture && picture}></img>
              </div>
            </div>
            <div className="fillContentDiv formElement">
              <div className="names formContentElement">
                <input className="inputRequest " type="text" placeholder="First Name" />
                <input className="inputRequest " type="text" placeholder="Last Name" />
              </div>
            </div>
            <div className="submitButtonDiv formElement">
              <button className="submitButton">Register</button>
            </div>
          </form>
        </div>
      </div>
    </div>
  );
}

export default Register;