【问题标题】:How to have javascript inside of react.js如何在 react.js 中包含 javascript
【发布时间】:2022-02-03 07:31:45
【问题描述】:

我正在构建一个 React.JS 网站,但我不完全确定如何在我的 html 中实现一段 JavaScript。在普通 HTML 中,您可以将脚本放在这些标签中:

<Script></Script>

但是使用 react.js

function App() {
  return (
    <div>
        <button onlick='log()'>Log</button>
        <script>
            Log() = Console.log('Hello')
        </Script>
    </div>
  );
}

export default App;

这样的事情是行不通的。 我怎么能以这种方式运行脚本?

【问题讨论】:

  • 您可以尝试dangerouslySetInnerHTML - 但请记住,它被称为“危险”是有充分理由的。你真的需要返回一个脚本标签吗?可能不会。

标签: javascript html css reactjs


【解决方案1】:

试试这个

 function App() {
const log =()=> {console.log('Hello')}
  return (
    <div>
        <button onClick={()=>log()}>Log</button>
     
    </div>
  );
}

export default App;

更多信息:https://reactjs.org/docs/handling-events.html

【讨论】:

    【解决方案2】:

    请了解 React 的工作原理以及 events work specifically 的工作原理

    一个基本的例子:

    function App() {
      const log = () => console.log('Hello')
    
      return <button onClick={log}>Log</button>
    }
    
    export default App;
    

    【讨论】:

    • 这段代码在每次重新渲染时重新声明 log 函数。它有效,但并不理想。最好将log 语句放在功能组件之外。你的答案没有问题,只是分享给任何阅读这篇文章的人。
    • @Slbox - 这是 React 功能开发的规范,在性能方面毫无意义。您应该提到的是,每次log 引用的时候都会创建一个新函数,这可以使用useCallback 挂钩来避免,我没有这样做包括不要混淆OP。
    【解决方案3】:

    不需要使用脚本标签你可以把所有你想要的函数放在App函数中,然后再返回 请具体说明您需要做什么,以便我提供帮助

    【讨论】:

    • 目前我只是想了解如何实现一个脚本。我目前没有确切的需要。我现在只是在玩耍,试图掌握它
    • 好的,所以你只需要把脚本放在函数App里面,在返回函数之前
    • 请将此作为评论而不是答案
    【解决方案4】:

    ReactJs Docs 将成为你的朋友,但基本上你可以在你的 return 语句之前在你的函数组件中运行你的 javascript 代码

    这是一个codesandbox link 示例

    【讨论】:

      【解决方案5】:

      这是一种更好的方法,但是除了我认为我可以在此答案中解释的内容之外,您还必须从问题中的代码中了解很多关于 React 的知识。您的代码有许多拼写错误,您可能实际上不需要使用 &lt;script&gt; 标记。

      const logger = () => {
        console.log('hello')
      }
      
      function App() {
          return (
            <div>
                <button onClick={logger}>Log</button>
            </div>
          );
      }
      
      export default App;
      

      【讨论】:

      • 我知道很多,但我现在只是把一些基本的东西作为脚本代码的占位符,我知道这是不正确的
      • 您编写了一个 功能性 组件而不是类,但在您的答案中将两者混合在一起,导致代码无效。
      • @vsync 很好。原始代码中的大量错别字更容易出错
      • @LukeC 您的代码不是基本的,只是错误的。 Console 不是正确的大小写。 onlick='log()' 不是远程正确的 React 代码。需要学习没有错,但请明白你必须学习多少。
      猜你喜欢
      • 2017-11-10
      • 2017-09-08
      • 2019-07-30
      • 1970-01-01
      • 2017-12-16
      • 1970-01-01
      • 1970-01-01
      • 2014-01-05
      • 1970-01-01
      相关资源
      最近更新 更多