Javascript React钩子中的正则表达式
我想根据API调用的值设置类名。 该API是一种财务API,以“perchange”的形式返回百分比变化:“+0.03%”。 我想知道它是正的,负的还是中性的。我想影响css,使其在正时显示绿色,在负时显示红色,在中性时显示灰色Javascript React钩子中的正则表达式,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,我想根据API调用的值设置类名。 该API是一种财务API,以“perchange”的形式返回百分比变化:“+0.03%”。 我想知道它是正的,负的还是中性的。我想影响css,使其在正时显示绿色,在负时显示红色,在中性时显示灰色 import React, { useState, useEffect } from "react"; function Ticker(props) { const [state, setState] = useState({}); const [statu
import React, { useState, useEffect } from "react";
function Ticker(props) {
const [state, setState] = useState({});
const [status, setStatus] = useState();
useEffect(() => {
let currStock = props.stock;
const options = { method: "GET", headers: { Accept: "application/json" } };
fetch(
"https://financialmodelingprep.com/api/v3/company/profile/" + currStock,
options
)
.then(response => response.json())
.then(y => {
setState(y.profile);
});
}, []);
function positive(value) {
// The Goal being to set className to these so the css can be conditional.
if (/\+/g.test(value) == true) {
setStatus("positive");
} else if (/\-/g.test(value) == false) {
setStatus("negative");
} else {
setStatus("neutral");
}
}
console.log(state);
positive(state.changesPercentage);
return (
<div className="stock">
<section className="stockInfo">
<h1>{state.companyName}</h1>
<h3> {state.industry}</h3>
<img src={state.image} />
<h3>Financials</h3>
<p className="positive">{state.changes}</p>
<p className={status}>{state.changesPercentage}</p>
<p>${state.price}</p>
<a href={state.website}>Learn More</a>
</section>
</div>
);
}
export default Ticker;
您正在渲染函数组件体中调用setStatus。在效果或其他效果中移动积极的逻辑将解决您的问题
如果值在更新过程中没有更改,React不会重新渲染子级或火焰效果,但会重新渲染手头的组件;这将反过来再次调用setStatus
这里有一个工作版本:那么问题是什么呢?我运行代码时遇到的错误是错误:重新渲染太多。React限制渲染的数量以防止无限循环。包括函数的其余代码。它连接到主函数,主函数承载所有其他函数,但没有useEffect。您基本上是在渲染中设置状态,为什么不在useEffect中设置状态?这是我做的第一件事。它仍然提出同样的问题。无限循环。如果你想要整个项目,我可以链接github谢谢你对无限循环的帮助,如果我能再问你一个问题的话。当我请求fords股票代码信息时,它返回为“+0.05”,带有正则表达式,它应该返回为正,但返回为中性。您可能应该就此提出另一个问题。