reactjs - 在 React.JS 中的组件上创建条件时出错
问题描述
我的应用程序中有以下组件:
import React from 'react';
function CriandoParametros (props){
const status = props.nota >= 6 ? 'Aprovado' : 'Reprovado';
const frase = <p>O aluno <strong>{props.aluno}</strong> recebeu a nota: <strong>{props.nota}</strong> e está <span id="resultado">{ status }</span></p>;
if(props.nota >= 6){
document.getElementById("resultado").style.color = '#008000';
}else{
document.getElementById("resultado").style.color = '#FF0000';
}
return(
<div>
<hr />
{frase}
</div>
)
}
export default CriandoParametros;
在我的 index.js 文件中,我将这个组件如下所示:
import React from "react";
import reactDom from "react-dom";
import './index.css';
import Menu from './components/basicos/header';
import Rodape from './components/basicos/footer';
import CriandoParametros from "./components/basicos/ComParametros";
const subtitulo = <h3>Empresa de Engenharia</h3>
reactDom.render(
<div>
<Menu></Menu>
<h2>Fazendo um teste para Engesin</h2>
{ subtitulo }
<CriandoParametros aluno="Andrêy Ferraz" nota="8.5"/>
<CriandoParametros aluno="Jose Pereira" nota="5.5"/>
<Rodape></Rodape>
</div>
, document.getElementById("root"));
我该如何解决这个问题?我现在从 React.JS 开始!
解决方案
操作 DOM 时始终使用useEffect
钩子,它会为您节省很多痛苦,也是一种很好的做法正如 Brian 所说,在不必要时操作 dom 是一种反模式
更新代码:
import React, {useEffect} from 'react'; //modified
function CriandoParametros (props){
//modification - start
useEffect(() => {
const el = document.getElementById("resultado");
if(el) el.style.color = props.nota >= 6 ? '#008000' : '#FF0000';
}, [props.nota])
// end
const status = props.nota >= 6 ? 'Aprovado' : 'Reprovado';
const frase = <p>O aluno <strong>{props.aluno}</strong> recebeu a nota: <strong>{props.nota}</strong> e está <span id="resultado">{ status }</span></p>;
return(
<div>
<hr />
{frase}
</div>
)
}
export default CriandoParametros;
推荐阅读
- css - 在源为数据uri格式的图像中应用css时有什么区别吗?
- android - 如何使用 Retrofit 发布这些数据
- biztalk - BizTalk 安装问题
- python - 如何在熊猫中将列数据作为列表插入
- r - 在R中提取data_frame行的某些部分?
- python - PyGears - 导入语句中的无限循环
- php - Apache RewriteMap prg 使用 fopen('php://stdin', 'r') 不能通过 HTTPS 工作
- azure-devops - Azure CLI - 从视图中获取最新包(az artifacts 通用下载)?
- mongodb - MongoDB 副本集没有主节点和无法访问的节点
- python - pdfplumber 给出 fp.seek(pos) AttributeError: 'dict' object has no attribute 'seek'