【问题标题】:how to translate this javascript code into JSX React如何将此 javascript 代码翻译成 JSX React
【发布时间】:2021-10-19 20:37:05
【问题描述】:

所以我有这个我想在 React react 中使用的 javascript 代码,它目前正在工作,所以这就是我得到的,首先

这是我的 JAVASCRIPT 代码我想变成 GATSBY react JSX 的那个

function onLoad() {
        var showDiv;
        if(localStorage.getItem ("showDiv") == null) {
            showDiv = true;
        }
        else {
            showDiv = localStorage.getItem ("showDiv")
        }

        if (showDiv) {
             document.getElementById ('myDiv') .style.display = 'block';
        }
        else {
            document.getElementById ('myDiv') .remove();
        }
    }

    function onClose() {
        document.getElementById ('myDiv') .remove();
        localStorage.setItem("showDiv", false);
    }

这就是我到目前为止所做的,它可以工作,但我不知道如何从 javascript 代码中编写上面的 onClose 函数

所以这是我的组件

import React, { useEffect } from 'react';
import '../index.css'



export default function Com() {
  useEffect(() => {
    var showDiv;
  if (localStorage.getItem ("showDiv") == null) {
      showDiv = true;
  }
      else {
          showDiv = localStorage.getItem ("showDiv")
      }
      if (showDiv) {
        document.querySelector ('.contenedor').style.display = 'block';
     }
     else {
      document.querySelector ('.contenedor').remove();
     }
     
     () => {
      document.querySelector ('.contenedor').remove(); /* THIS IS THE ANONYMOUS FUNCTION */
      localStorage.setItem("showDiv", false);
     }
  }, []);
  return (
  <div className="contenedor" style={{display: "none"}}>
  <img className="portada" src="https://res.cloudinary.com/lenguaestudiocreativo/image/upload/v1626228418/hportada_jgljqd.svg" alt=""/>
</div>
 );
}

这是我的主要索引:

import React from 'react';
import './index.css';
import Com from './componentes/Comdos';


export default function index() {
  return (
    <Com />
  )
};

我尝试使用这个匿名函数,但是它不起作用,当然,如果我删除这个匿名函数它可以正常工作,但我还需要代码的最后一部分,onClose 函数,如果匿名函数不起作用,我该如何编码?

这就是我在使用匿名函数时遇到的错误

错误 C:\Users\USUARIO\Downloads\VSCODE\JSXejercicios\landingpage\src\pages\componentes\Comdos.js 22:10 错误预期分配或函数调用,而是看到 一个表达式 no-unused-expressions

✖ 1 个问题(1 个错误,0 个警告)

【问题讨论】:

    标签: javascript reactjs jsx


    【解决方案1】:

    你可以使用 react useStateuseEffect 钩子,试试这个:

    import React, { useState, useEffect } from "react";
    
    export default function App() {
      const [show, setShow] = useState(true);
    
      useEffect(() => {
        if (localStorage.getItem("showDiv") == null)
          localStorage.setItem("showDiv", show);
      }, []);
    
      function togglePic() {
        setShow(!show ? true : false);
        localStorage.setItem("showDiv", !show);
      }
    
      return (
        <>
          <button onClick={togglePic}>Click to toggle the picture</button>
          <div className="contenedor" style={{ display: show ? "block" : "none" }}>
            <img
              className="portada"
              src="https://static.wikia.nocookie.net/spongebob/images/3/3e/SpongeBob_Star_show.jpeg"
              alt=""
            />
          </div>
        </>
      );
    }
    
    

    参考:

    这里有一些您可以进一步探索的参考资料

    ReactJs Documentation - Conditional Rendering
    ReactJs Documentation - Handling Events
    ReactJs Documentation - Hooks State
    ReactJs Documentation - Hooks Effect

    代码示例:

    使用 CodeSanbox 尝试实时代码
    Code Sanbox - Demo

    【讨论】:

    • 嘿,谢谢,@riz'ky 但这是一个登陆页面,类似的,我看到你放了一个 javascript 函数和一个 click 函数,我尝试使用相同的功能,但没有名称,没有点击功能,仍然没有工作,所以你告诉我
    • 。 ....它实际上是整个页面的主体,它可以使它更快地加载和刷新,而不会在刷新浏览器过程中显示空白的白色背景页面,它确实有助于我有这个例子loving-morse-5ebf27.netlify.app
    • 所以,是的,如果您对使其加载速度更快并刷新速度更快,而不会在刷新浏览器进程中显示空白的白色背景页面有任何其他想法,请务必告诉我!
    • 嗨@lenguaestudiocreativo,你不能在useEffect进程中定义匿名函数,你可以创建一个名为onClose的新函数然后在useEffect进程中调用它,或者你可以尝试返回useEffect回调函数中的匿名函数,检查这个useEffect - cleaning up an effect
    • @Ri'zky ok,所以我将匿名函数放在返回的 html 中,它没有给我任何错误,尽管我看到了一些改进刷新我仍然看到白色的空白背景,我在本地做这个,所以你知道有什么其他方法可以让它变得更好吗?
    猜你喜欢
    • 2020-12-01
    • 2017-07-24
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 2018-09-09
    相关资源
    最近更新 更多