'React Hook内部useEffect中的'dataURI'变量将在每次渲染后丢失

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了'React Hook内部useEffect中的'dataURI'变量将在每次渲染后丢失相关的知识,希望对你有一定的参考价值。

我想将下面用普通javascript编写的函数转换为react函数。下面的功能允许用户单击图像输入并将图像附加到包含类“ .editor”]的文本区域

 function getImage() {
      var file = document.querySelector("input[type=file]").files[0];

      var reader = new FileReader();

      let dataURI;

      reader.addEventListener(
        "load",
        function() {
          dataURI = reader.result;

          const img = document.createElement("img");
          img.src = dataURI;
          document.querySelector(".editor").appendChild(img);
        },
        false
      );

      if (file) {
        console.log("s");
        reader.readAsDataURL(file);
      }
    }

这是我到目前为止在我的react组件中所做的...我收到以下错误消息

TypeError:editor.push不是函数

Tools.js组件:

function Toolbar() {
    const dispatch = useDispatch();

    let inputRef = useRef(null);
    const editor = useRef(null);
    const [selectedFile, setSelectedFile] = useState(null);

    const imgChangeHandler = e => {

        e.preventDefault();
        setSelectedFile(e.target.files[0]);

        let reader = new FileReader();
        let dataURI = reader.result;

        const img = React.createElement("img",{src: dataURI});
        editor.push(img);

        if(selectedFile) {
            console.log("s");
            reader.readAsDataURL(selectedFile)
        }
    };

Editor.js组件:

 <>
            <div className="center">
               <div className="editor" ref={editor} style={editor} contentEditable={true} suppressContentEditableWarning={true}>
                   <h1>{introText}</h1>
                   <p>{subText}</p>
               </div>
            </div>
        </>

我想将下面用普通javascript编写的函数转换为react函数。下面的功能允许用户单击图像输入并将图像附加到文本区域,......>

答案

dont

editor.push(img);

以上是关于'React Hook内部useEffect中的'dataURI'变量将在每次渲染后丢失的主要内容,如果未能解决你的问题,请参考以下文章

React Hook - Hook规则

使用react hook和react context创建dialog组件

react-redux-hook实战笔记

MobX 在 hook 中的使用

在 React 中使用 Hook 填充状态

react hook下的hoc组件