无法通过React.js中的组件设置包含另一个组件的div的样式显示

Ibrahim Shah |

我的目标是创建一个包含函数的组件,其中一个按钮删除一个包含文本的单独的div,该文本在React.js中由另一个div中的另一个组件呈现。

以下是我的app.js的代码。我想使用“ TurnOff”组件将“ tweetSection”的样式设置为“ none”(包含提供文本的Tweet组件)。

import logo from './logo.svg';
import Tweet from './Tweet';
import TurnOff from './TurnOff';

function App() {
  return (
    <div>
    <div id="tweetSection">

    <Tweet />
    </div>
    <div id="button">
    <TurnOff />

    </div>
    </div>
  );
}

export default App;```

这是我的TurnOff组件的代码

import React from 'react';

function TurnOff(){
  const toggle = () => {
    document.getElementById('tweetSection').style.display = "none";



  }



  return(
    <div>
    <button onClick={toggle()}>this is a button</button>
    </div>
  );
}

export default TurnOff;

运行此命令时,出现类型错误,指出“ TypeError:无法读取null的属性'style'。是否有一种简单的方法,或以其他方式对此进行编程以隐藏“ tweetSection” div?

查理·鲍德金

一些东西。

要回答为什么会出现错误,这是因为您toggle()用紧迫地调用了函数(onClick={toggle()}

使用此方法可以避免过早调用函数的问题:

    <button onClick={toggle}>this is a button</button>

要么:

    <button onClick={() => toggle()}>this is a button</button>

渲染后立即调用它,这意味着document.getElementById('tweetSection')可能为null。

您可以像这样检查:

const el = document.getElementById('tweetSection');
if (el) {
  el.style.display = "none";
} else {
  console.warn('No tweetSection element found');
}

但是,解决此问题的更有效的方法是传递道具:

import logo from './logo.svg';
import Tweet from './Tweet';
import TurnOff from './TurnOff';
import React, {useState} from 'react';

function App() {
  const [showTweet, setShowTweet] = useState(true);
  return (
    <div>
     {showTweet && <div id="tweetSection">
      <Tweet />
     </div>}
    <div id="button">
       <TurnOff toggle={() => {
          setShowTweet(!showTweet);
        }}
       />
      </div>
    </div>
  );
}

export default App;
import React from 'react';

function TurnOff({ toggle }){
  return(
    <div>
    <button onClick={toggle}>this is a button</button>
    </div>
  );
}

export default TurnOff;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何通过在 react.js 中从该组件设置道具来重定向到另一个组件

从另一个组件 React js 设置状态

如何在React中从另一个组件设置一个组件的状态

NgbModal无法从另一个组件中包含的组件打开模态

是否可以从第一个组件开始一个div并在react js中的另一个组件中结束

单击另一个组件中的按钮时,如何显示/隐藏React组件?

React-如何从另一个组件中的图像onClick事件显示组件?

在React.Js中创建一个组件作为另一个组件的子组件

使用 React JS 中另一个组件内的组件导航

通过React中的父组件在另一个组件中触发动作

如何通过在React中单击另一个组件来删除组件?

React.js:将一个组件包装到另一个组件中

修改React.js中另一个组件中一个组件的HTML元素

react.js 应用程序中的一个组件与另一个组件重叠

React-如何将API数据从一个组件传递到另一个js文件中的另一个组件?

如何在React.js中从一个组件(子组件)到另一个组件(父组件)获取值?

从另一个组件获取参数[React JS]

基于另一个切换组件的 React JS JSX 显示或隐藏

在 React 中的另一个组件中动态渲染一个组件

在 React 中单击另一个组件中的按钮后如何显示 Modal?

订阅从另一个组件发布的一个 React 组件中的操作

如何在React中让一个组件“位于另一个组件之下”?

如何在 React 中从另一个组件重新渲染一个组件?

在react中动态添加另一个组件

React Hooks,setState的更新值在另一个组件中显示初始值

React组件中另一个文件中的React JS调用函数

如何测试React组件是否包含Tape和Enzyme的另一个组件?

另一个组件如何从react / redux中的另一个组件动作中监听?

无法从另一个组件导入反应组件