Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React钩子中的正则表达式_Javascript_Reactjs_React Hooks - Fatal编程技术网

Javascript React钩子中的正则表达式

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

我想根据API调用的值设置类名。 该API是一种财务API,以“perchange”的形式返回百分比变化:“+0.03%”。 我想知道它是正的,负的还是中性的。我想影响css,使其在正时显示绿色,在负时显示红色,在中性时显示灰色

 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”,带有正则表达式,它应该返回为正,但返回为中性。您可能应该就此提出另一个问题。