在 React 中对模型使用常规 Javascript 类

use of conventional Javascript classes for models in React

是否可以在使用 React 的模型(在 MVC 范例中)中使用传统的 Javascript 类 而不是使用似乎会破坏可重用性的 Redux 或上下文和缩减器?如果是这样,我们如何才能有效地 'subscribe' 更改这些对象中的数据的操作,以便有效地呈现视图(即 React 组件)?

订阅逻辑由您自己弄清楚。 React 不提供任何可以在其他 类 中“借用”的机制。但是 Javascript 中的面向事件编程当然不是什么新鲜事。所以像模式这样的事件发射器会起作用。所以这是一个例子(未经测试,但它应该给你一个想法):

class MyClass {

  data = {};

  constructor(onTick) {
    setInterval(() => {
      const now = new Date();
      this.data.time = now;
      this.data.tillChristmas = (new Date('2021-12-25')) - now;
      onTick && onTick(this);
    }, 10 * 1e3);
  }
}

const MyComp = () => {

  const [data, setData] = useState({});
  useEffect(() => {
      new MyClass(myclass => {
        setData(myclass.data);
      });
    }, []);

  return <pre>
    {JSON.stringify(data, true, 2)}
  </pre>;
  // of course, you could present the data in more interesting ways, too.
};