MobX console.log() 有效,但 render() 方法不使用 React.Component 更新

Posted

技术标签:

【中文标题】MobX console.log() 有效,但 render() 方法不使用 React.Component 更新【英文标题】:MobX console.log() works but render() method doesn't update using React.Component 【发布时间】:2021-06-04 17:46:55 【问题描述】:

MobX 更新 console.log() 发出的存储,但实际上并没有更新 React.Componentrender() 方法。在这个例子中我遗漏了什么?

@observer
export class App extends Component 
  constructor(props) 
    super(props);
    this.onClick = this.onClick.bind(this);
  

  @observable data = 
    error: ""
  ;

  onClick() 
    this.data.error = "error has occurred";
    console.log(this.data.error) // testing purposes
  

  render() 
    return (
      <div>
        <div className="red">[ this.data.error ]</div>
        <input type="button" value="Click Me!" onClick=this.onClick />
      </div>
    );
  

CodeSandbox

来源:***的原始代码

【问题讨论】:

【参考方案1】:

在 MobX v6 中,需要在 constructor 方法中调用 makeObservable(this) 才能使类装饰器工作。

请参阅these docs 了解更多信息。

有关工作示例,请参阅 this sandbox。

【讨论】:

以上是关于MobX console.log() 有效,但 render() 方法不使用 React.Component 更新的主要内容,如果未能解决你的问题,请参考以下文章

dojo.byId() 有效,但 dijit.byId() 无效

无法在异步函数上调用nodeify但可以调用then()

Sourcemaps 仅在单击 Chrome 控制台的 console.log 中的链接时才有效

ES6中的let命令

js的变量的有效域

前端开发技巧-那些不常见但十分有效的小玩意