如何在点击按钮时从组件向工人发送数据?

问题描述 投票:0回答:1

请你告诉我如何在点击按钮时从组件向工人发送数据?

我试过了,没有用

// xx.postMessage([first.value,second.value]);

能否请你建议我在哪里做错了.我想做一些背景计算和返回结果的组件。

这是我的代码

import React, { useEffect } from "react";
import "./styles.css";
import worker from "./workerfile";
import WebWorker from "./setup";
export default function App() {
  const buttonHan = () => {
    alert("==g=");
    // xx.postMessage([first.value,second.value]);
    //console.log("Message posted to worker");
  };

  useEffect(() => {
    let xx = new WebWorker(worker);
    //xx.addEventListener("message", event => {
    // });
  }, []);
  return (
    <div className="App">
      <h1>Hello CodeSandbox1</h1>
      <button onClick={buttonHan}>BTN</button>

      <h2>Start editing to see some magic happen!</h2>
    </div>
  );
}

编码

https:/codesandbox.iosbold-forest-s3guc?file=srcApp.js:212-263。

javascript reactjs react-redux react-hooks web-worker
1个回答
0
投票

这就是我的做法,不知道是否是最正确的方式,但我没有任何问题,像这样声明变量.另外,当涉及到与第三方事件处理程序工作时,它是非常有用的。

export default function App() {
    let xx = new WebWorker(worker);  // Declare worker
    // Constants declarations

    const buttonHan = () => {
       alert("==g=");
       xx.postMessage("[first.value,second.value]");
       console.log("Message posted to worker");
    };

    useEffect(() => {
       xx.addEventListener("message", event => {
           console.log(event)
       });
    }, [xx]);  // useEffect executes when worker is setted
    // this should be done even if variable is not a state

    ...
© www.soinside.com 2019 - 2024. All rights reserved.