React 组件不更新 mathjax 公式,除非其名称以小写开头

React component not updating mathjax formula unless its name starts with a lower case

提问人:watchI 提问时间:10/6/2023 最后编辑:watchI 更新时间:10/7/2023 访问量:28

问:

我的 React (^18.2.0) 项目包含几个组件。所有这些组件都包含 mathjax (better-react-mathjax) 公式和文本。当我更新文本时,它会在浏览器中正确更新。当我更新 mathjax 公式时,除非与组件相关的函数名称以小写开头,否则我在浏览器中看不到任何更新。

例如,这个组件 () 更新了公式,但是当我将名称从 更改为 时,公式不会更新:SetTheory1.jsR_{XY}setThor1SetThor1

import { MathJax, MathJaxContext } from "better-react-mathjax";

const setThor1 = () => {
 
  return (
    <div className="ddd">
      <MathJaxContext>
        <MathJax inline>
        this is a formula \({"R_{XY}"} \)
        </MathJax>
      </MathJaxContext>
    </div>
  );
};

export default setThor1;

在这两种情况下,文本 () 都会正确更新。为什么!?我希望公开组件的 const 的命名只是一种约定,对更新渲染组件没有影响。"this is a formula"project structure

/App.js************/

import { BrowserRouter as Router, Route, Switch } from "react-router-dom";

//import { MathJax, MathJaxContext } from "better-react-mathjax";
import Header from "./templateComponents/Header";
import Side from "./templateComponents/Side";
import Footer from "./templateComponents/Footer";
import IntroToProbaAndStat from "./Components/Introduction to proba and stat";

import SetThe2 from  "./Components/setTheory2";
import SetTheo1 from  "./Components/SetTheory1";
import RandomExp from "./Components/randomExperiment";
import RandomVar1 from "./Components/randomVariable1";
import RandomVar2 from "./Components/randomVariable2";
import RandomVar3 from "./Components/randomVariable3";
import RandomVar4 from "./Components/randomVariable4";
import ExampleUseEffectC from "./Components/UseEffectExample";

import "./assets/css/StatStyle.css";

function Appk() {
  return (
    <Router>
      <div className="App">
        <Header />
        <Side />
        <Footer />
        <div
          id="sec"
          style={{ backgroundColor: "rgb(245,244,240)" }}
          className="absolute p-4 max-sm:w-[30%] right-0 text-lg top-9 h-[90%] w-[70%] overflow-y-auto"
        >
          <Switch>
            <Route exact path="/IntrToProbaP">
              <IntroToProbaAndStat />
            </Route>

            <Route exact path="/setThe1P">
              <SetTheo1 />
            </Route>

            <Route exact path="/setThe2P">
              <SetThe2 />
            </Route>

 
            <Route exact path="/randomExpP">
              <RandomExp />
            </Route>
            
          
            
            <Route exact path="/randomVarP1">
              <RandomVar1 />
            </Route> 
            <Route exact path="/randomVarP2">
              <RandomVar2 />
            </Route> 
            <Route exact path="/randomVarP3">
              <RandomVar3 />
            </Route> 
            <Route exact path="/randomVarP4">
              <RandomVar4 />
            </Route> 
            
            <Route exact path="/ExampleUseEffect">
              <ExampleUseEffectC />
            </Route>
          </Switch>
        </div>
      </div>
    </Router>
  );
}

export default Appk;
ReactJS 组件 渲染 公式 MathJax

评论

0赞 Daniel Bank 10/7/2023
如果你这样做,它会更好吗?export default function SetThor1() { ... }
0赞 ghybs 10/7/2023
如何导入和使用它?你能分享一个最小的可重复的例子吗?
0赞 watchI 10/7/2023
非常感谢丹尼尔,当我把导出默认函数 SetThor1() { ... } 时,行为完全相似(S 在 SetThor1 大写)它不会更新 mathjax 公式,但是当我把导出默认函数 setThor1() { ... }(s在setThor1中小写)它更新了Mathjax公式,但在这两种情况下,它都会更新普通文本
0赞 watchI 10/7/2023
谢谢 ghybs 的回复,我不知道我该如何提供更多细节,除了
0赞 fast-reflexes 10/13/2023
如何更新公式?通常你通过状态或道具进行更新,但数学不是来自两者?您是在谈论更改源文件时在开发服务器中热重载吗?

答: 暂无答案