首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mobx-React React不重新渲染

Mobx-React React不重新渲染
EN

Stack Overflow用户
提问于 2020-08-23 15:03:41
回答 1查看 960关注 0票数 1

下面是使用Mobx管理state.But的React组件的一些代码,不同的使用方式会导致完全不同的结果。

App.js

代码语言:javascript
复制
import React from "react";
import "./styles.css";
import { observer } from "mobx-react";
import store from "./store";

const Span = () => {
  return <span>{store.count}</span>;
};

const app = function () {
  return (
    <div className="App">
      {/* section 1 */}
      <Span />

      {/* section 2 */}
      {/* <span>{store.count}</span> */}

      <button onClick={() => store.setCount(store.count + 1)}>Click</button>
    </div>
  );
};

export default observer(app);

store.js

代码语言:javascript
复制
import { observable, action } from "mobx";

class Store {
  @observable count = 0;

  @action setCount(count) {
    this.count = count;
  }
}

export default new Store();

使用第1节时,单击按钮不会刷新视图,但使用第2节时会刷新视图。

codesandbox

1、我想知道使用这两种方法的区别?

2、如果我坚持使用第1节,我如何更改代码?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-23 15:06:54

只需将observer包装在Span组件上即可。

代码语言:javascript
复制
const Span = observer(() => {
  return <span>{store.count}</span>;
});

Span不会观察你的商店,所以它不知道发生了什么变化。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63544267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档